[caclmgrd] Convert to Python 3; Add to sonic-host-services package (#5739)

To consolidate host services and install via packages instead of file-by-file, also as part of migrating all of SONiC to Python 3, as Python 2 is no longer supported, convert caclmgrd to Python 3 and add to sonic-host-services package
This commit is contained in:
Joe LeVeque 2020-10-29 16:29:12 -07:00 committed by GitHub
parent 527a69dfbf
commit e111204206
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 12 additions and 14 deletions

View File

@ -404,11 +404,6 @@ sudo cp $IMAGE_CONFIGS/constants/constants.yml $FILESYSTEM_ROOT/etc/sonic/
sudo cp $IMAGE_CONFIGS/sudoers/sudoers $FILESYSTEM_ROOT/etc/ sudo cp $IMAGE_CONFIGS/sudoers/sudoers $FILESYSTEM_ROOT/etc/
sudo cp $IMAGE_CONFIGS/sudoers/sudoers.lecture $FILESYSTEM_ROOT/etc/ sudo cp $IMAGE_CONFIGS/sudoers/sudoers.lecture $FILESYSTEM_ROOT/etc/
# Copy control plane ACL management daemon files
sudo cp $IMAGE_CONFIGS/caclmgrd/caclmgrd.service $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM
echo "caclmgrd.service" | sudo tee -a $GENERATED_SERVICE_FILE
sudo cp $IMAGE_CONFIGS/caclmgrd/caclmgrd $FILESYSTEM_ROOT/usr/bin/
# Copy systemd timer configuration # Copy systemd timer configuration
sudo cp $BUILD_TEMPLATES/pcie-check.timer $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM sudo cp $BUILD_TEMPLATES/pcie-check.timer $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM
sudo LANG=C chroot $FILESYSTEM_ROOT systemctl enable pcie-check.timer sudo LANG=C chroot $FILESYSTEM_ROOT systemctl enable pcie-check.timer

View File

@ -6,4 +6,5 @@ build:
dh $@ dh $@
override_dh_installsystemd: override_dh_installsystemd:
dh_installsystemd --no-start --name=caclmgrd
dh_installsystemd --no-start --name=procdockerstatsd dh_installsystemd --no-start --name=procdockerstatsd

View File

@ -5,7 +5,7 @@ After=updategraph.service
[Service] [Service]
Type=simple Type=simple
ExecStart=/usr/bin/caclmgrd ExecStart=/usr/local/bin/caclmgrd
Restart=always Restart=always
RestartSec=30 RestartSec=30

View File

@ -1,5 +1,6 @@
# Compiled Python files # Compiled Python files
*.pyc *.pyc
scripts/caclmgrdc
scripts/procdockerstatsdc scripts/procdockerstatsdc
# Generated by packaging # Generated by packaging

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python #!/usr/bin/env python3
# #
# caclmgrd # caclmgrd
# #
@ -148,7 +148,7 @@ class ControlPlaneAclManager(daemon_base.DaemonBase):
commands: List of strings, each string is a shell command commands: List of strings, each string is a shell command
""" """
for cmd in commands: for cmd in commands:
proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) proc = subprocess.Popen(cmd, shell=True, universal_newlines=True, stdout=subprocess.PIPE)
(stdout, stderr) = proc.communicate() (stdout, stderr) = proc.communicate()
@ -198,7 +198,7 @@ class ControlPlaneAclManager(daemon_base.DaemonBase):
for iface_table_name in INTERFACE_TABLE_NAME_LIST: for iface_table_name in INTERFACE_TABLE_NAME_LIST:
iface_table = self.config_db_map[namespace].get_table(iface_table_name) iface_table = self.config_db_map[namespace].get_table(iface_table_name)
if iface_table: if iface_table:
for key, _ in iface_table.iteritems(): for key, _ in iface_table.items():
if not _ip_prefix_in_key(key): if not _ip_prefix_in_key(key):
continue continue
@ -234,7 +234,7 @@ class ControlPlaneAclManager(daemon_base.DaemonBase):
(self.namespace_mgmt_ip, self.namespace_docker_mgmt_ip[namespace])) (self.namespace_mgmt_ip, self.namespace_docker_mgmt_ip[namespace]))
else: else:
# In host allow all tcp/udp traffic from namespace docker eth0 management ip to host docker bridge # In host allow all tcp/udp traffic from namespace docker eth0 management ip to host docker bridge
for docker_mgmt_ip in self.namespace_docker_mgmt_ip.values(): for docker_mgmt_ip in list(self.namespace_docker_mgmt_ip.values()):
allow_internal_docker_ip_cmds.append(self.iptables_cmd_ns_prefix[namespace] + "iptables -A INPUT -p tcp -s {} -d {} -j ACCEPT".format allow_internal_docker_ip_cmds.append(self.iptables_cmd_ns_prefix[namespace] + "iptables -A INPUT -p tcp -s {} -d {} -j ACCEPT".format
(docker_mgmt_ip, self.namespace_mgmt_ip)) (docker_mgmt_ip, self.namespace_mgmt_ip))
@ -374,7 +374,7 @@ class ControlPlaneAclManager(daemon_base.DaemonBase):
num_ctrl_plane_acl_rules = 0 num_ctrl_plane_acl_rules = 0
# Walk the ACL tables # Walk the ACL tables
for (table_name, table_data) in self._tables_db_info.iteritems(): for (table_name, table_data) in self._tables_db_info.items():
table_ip_version = None table_ip_version = None
@ -399,7 +399,7 @@ class ControlPlaneAclManager(daemon_base.DaemonBase):
acl_rules = {} acl_rules = {}
for ((rule_table_name, rule_id), rule_props) in self._rules_db_info.iteritems(): for ((rule_table_name, rule_id), rule_props) in self._rules_db_info.items():
if rule_table_name == table_name: if rule_table_name == table_name:
if not rule_props: if not rule_props:
self.log_warning("rule_props for rule_id {} empty or null!".format(rule_id)) self.log_warning("rule_props for rule_id {} empty or null!".format(rule_id))
@ -437,7 +437,7 @@ class ControlPlaneAclManager(daemon_base.DaemonBase):
continue continue
# For each ACL rule in this table (in descending order of priority) # For each ACL rule in this table (in descending order of priority)
for priority in sorted(acl_rules.iterkeys(), reverse=True): for priority in sorted(iter(acl_rules.keys()), reverse=True):
rule_props = acl_rules[priority] rule_props = acl_rules[priority]
if "PACKET_ACTION" not in rule_props: if "PACKET_ACTION" not in rule_props:
@ -576,7 +576,7 @@ class ControlPlaneAclManager(daemon_base.DaemonBase):
config_db_subscriber_table_map = {} config_db_subscriber_table_map = {}
# Loop through all asic namespaces (if present) and host namespace (DEFAULT_NAMESPACE) # Loop through all asic namespaces (if present) and host namespace (DEFAULT_NAMESPACE)
for namespace in self.config_db_map.keys(): for namespace in list(self.config_db_map.keys()):
# Unconditionally update control plane ACLs once at start on given namespace # Unconditionally update control plane ACLs once at start on given namespace
self.update_control_plane_acls(namespace) self.update_control_plane_acls(namespace)
self.update_control_plane_nat_acls(namespace) self.update_control_plane_nat_acls(namespace)

View File

@ -11,6 +11,7 @@ setup(
maintainer = 'Joe LeVeque', maintainer = 'Joe LeVeque',
maintainer_email = 'jolevequ@microsoft.com', maintainer_email = 'jolevequ@microsoft.com',
scripts = [ scripts = [
'scripts/caclmgrd',
'scripts/procdockerstatsd', 'scripts/procdockerstatsd',
], ],
install_requires = [ install_requires = [