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

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.
This commit is contained in:
Joe LeVeque 2020-11-07 12:48:19 -08:00 committed by GitHub
parent 9e7e092610
commit 04d0e8ab00
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 15 additions and 17 deletions

View File

@ -324,12 +324,6 @@ sudo cp files/dhcp/90-dhcp6-systcl.conf.j2 $FILESYSTEM_ROOT_USR_SHARE_SONIC_TEMP
sudo cp $IMAGE_CONFIGS/interfaces/init_interfaces $FILESYSTEM_ROOT/etc/network/interfaces sudo cp $IMAGE_CONFIGS/interfaces/init_interfaces $FILESYSTEM_ROOT/etc/network/interfaces
sudo mkdir -p $FILESYSTEM_ROOT/etc/network/interfaces.d sudo mkdir -p $FILESYSTEM_ROOT/etc/network/interfaces.d
# Copy hostcfgd files
sudo cp $IMAGE_CONFIGS/hostcfgd/hostcfgd.service $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM
echo "hostcfgd.service" | sudo tee -a $GENERATED_SERVICE_FILE
sudo cp $IMAGE_CONFIGS/hostcfgd/hostcfgd $FILESYSTEM_ROOT/usr/bin/
sudo cp $IMAGE_CONFIGS/hostcfgd/*.j2 $FILESYSTEM_ROOT_USR_SHARE_SONIC_TEMPLATES/
# copy core file uploader files # copy core file uploader files
sudo cp $IMAGE_CONFIGS/corefile_uploader/core_uploader.service $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM sudo cp $IMAGE_CONFIGS/corefile_uploader/core_uploader.service $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM
sudo LANG=C chroot $FILESYSTEM_ROOT systemctl disable core_uploader.service sudo LANG=C chroot $FILESYSTEM_ROOT systemctl disable core_uploader.service

View File

@ -1,4 +1,4 @@
# This file describes the maintainers for sonic-device-data # This file describes the maintainers for sonic-host-services-data
# See the SONiC project governance document for more information # See the SONiC project governance document for more information
Name = "Joe LeVeque" Name = "Joe LeVeque"

View File

@ -0,0 +1 @@
templates/*.j2 /usr/share/sonic/templates/

View File

@ -7,4 +7,5 @@ build:
override_dh_installsystemd: override_dh_installsystemd:
dh_installsystemd --no-start --name=caclmgrd dh_installsystemd --no-start --name=caclmgrd
dh_installsystemd --no-start --name=hostcfgd
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/hostcfgd ExecStart=/usr/local/bin/hostcfgd
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target

View File

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

View File

@ -1,16 +1,15 @@
#!/usr/bin/python -u #!/usr/bin/env python3
# -*- coding: utf-8 -*-
import ast import ast
import copy
import ipaddress
import os import os
import sys
import subprocess import subprocess
import syslog import syslog
import copy
import jinja2 import jinja2
import ipaddr as ipaddress
from swsssdk import ConfigDBConnector
from sonic_py_common import device_info from sonic_py_common import device_info
from swsssdk import ConfigDBConnector
# FILE # FILE
PAM_AUTH_CONF = "/etc/pam.d/common-auth-sonic" PAM_AUTH_CONF = "/etc/pam.d/common-auth-sonic"
@ -80,7 +79,7 @@ class Iptables(object):
iface, ip = key iface, ip = key
ip_str = ip.split("/")[0] ip_str = ip.split("/")[0]
ip_addr = ipaddress.IPAddress(ip_str) ip_addr = ipaddress.ip_address(ip_str)
if isinstance(ip_addr, ipaddress.IPv6Address): if isinstance(ip_addr, ipaddress.IPv6Address):
ver = '6' ver = '6'
else: else:
@ -313,7 +312,7 @@ class HostConfigDaemon:
def update_all_feature_states(self): def update_all_feature_states(self):
feature_table = self.config_db.get_table('FEATURE') feature_table = self.config_db.get_table('FEATURE')
for feature_name in feature_table.keys(): for feature_name in feature_table:
if not feature_name: if not feature_name:
syslog.syslog(syslog.LOG_WARNING, "Feature is None") syslog.syslog(syslog.LOG_WARNING, "Feature is None")
continue continue
@ -359,7 +358,7 @@ class HostConfigDaemon:
def feature_state_handler(self, key, data): def feature_state_handler(self, key, data):
feature_name = key feature_name = key
feature_table = self.config_db.get_table('FEATURE') feature_table = self.config_db.get_table('FEATURE')
if feature_name not in feature_table.keys(): if feature_name not in feature_table:
syslog.syslog(syslog.LOG_WARNING, "Feature '{}' not in FEATURE table".format(feature_name)) syslog.syslog(syslog.LOG_WARNING, "Feature '{}' not in FEATURE table".format(feature_name))
return return

View File

@ -12,9 +12,11 @@ setup(
maintainer_email = 'jolevequ@microsoft.com', maintainer_email = 'jolevequ@microsoft.com',
scripts = [ scripts = [
'scripts/caclmgrd', 'scripts/caclmgrd',
'scripts/hostcfgd',
'scripts/procdockerstatsd', 'scripts/procdockerstatsd',
], ],
install_requires = [ install_requires = [
'Jinja2>=2.10',
'sonic-py-common', 'sonic-py-common',
'swsssdk>=2.0.1', 'swsssdk>=2.0.1',
], ],