[Python] Migrate applications/scripts to import sonic-py-common package (#5043)

As part of consolidating all common Python-based functionality into the new sonic-py-common package, this pull request:
1. Redirects all Python applications/scripts in sonic-buildimage repo which previously imported sonic_device_util or sonic_daemon_base to instead import sonic-py-common, which was added in https://github.com/Azure/sonic-buildimage/pull/5003
2. Replaces all calls to `sonic_device_util.get_platform_info()` to instead call `sonic_py_common.get_platform()` and removes any calls to `sonic_device_util.get_machine_info()` which are no longer necessary (i.e., those which were only used to pass the results to `sonic_device_util.get_platform_info()`.
3. Removes unused imports to the now-deprecated sonic-daemon-base package and sonic_device_util.py module

This is the next step toward resolving https://github.com/Azure/sonic-buildimage/issues/4999

Also reverted my previous change in which device_info.get_platform() would first try obtaining the platform ID string from Config DB and fall back to gathering it from machine.conf upon failure because this function is called by sonic-cfggen before the data is in the DB, in which case, the db_connect() call will hang indefinitely, which was not the behavior I expected. As of now, the function will always reference machine.conf.
This commit is contained in:
Joe LeVeque 2020-08-03 11:43:12 -07:00 committed by GitHub
parent c4728a8261
commit 3b89e5d467
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
38 changed files with 92 additions and 75 deletions

View File

@ -14,7 +14,7 @@ try:
import json import json
import syslog import syslog
from sonic_platform_base.chassis_base import ChassisBase from sonic_platform_base.chassis_base import ChassisBase
from sonic_daemon_base.daemon_base import Logger from sonic_py_common.logger import Logger
from sonic_platform.fan import Fan from sonic_platform.fan import Fan
from sonic_platform.psu import Psu from sonic_platform.psu import Psu
from sonic_platform.component import Component from sonic_platform.component import Component

View File

@ -8,7 +8,6 @@ try:
import os import os
import time import time
import subprocess import subprocess
import sonic_device_util
import syslog import syslog
from ctypes import create_string_buffer from ctypes import create_string_buffer
from sonic_platform_base.sfp_base import SfpBase from sonic_platform_base.sfp_base import SfpBase
@ -18,7 +17,6 @@ try:
from sonic_platform_base.sonic_sfp.sff8436 import sff8436Dom from sonic_platform_base.sonic_sfp.sff8436 import sff8436Dom
from sonic_platform_base.sonic_sfp.sff8436 import sff8436InterfaceId from sonic_platform_base.sonic_sfp.sff8436 import sff8436InterfaceId
from sonic_platform_base.sonic_sfp.sfputilhelper import SfpUtilHelper from sonic_platform_base.sonic_sfp.sfputilhelper import SfpUtilHelper
from sonic_daemon_base.daemon_base import Logger
except ImportError as e: except ImportError as e:
raise ImportError(str(e) + "- required module not found") raise ImportError(str(e) + "- required module not found")

View File

@ -11,7 +11,6 @@
import os import os
import time import time
import subprocess import subprocess
import sonic_device_util
from ctypes import create_string_buffer from ctypes import create_string_buffer
try: try:

View File

@ -3,9 +3,10 @@
import os import os
import struct import struct
import subprocess import subprocess
from sonic_daemon_base.daemon_base import DaemonBase
from mmap import * from mmap import *
from sonic_py_common import device_info
HOST_CHK_CMD = "docker > /dev/null 2>&1" HOST_CHK_CMD = "docker > /dev/null 2>&1"
EMPTY_STRING = "" EMPTY_STRING = ""
@ -13,7 +14,7 @@ EMPTY_STRING = ""
class APIHelper(): class APIHelper():
def __init__(self): def __init__(self):
(self.platform, self.hwsku) = DaemonBase().get_platform_and_hwsku() (self.platform, self.hwsku) = device_info.get_platform_and_hwsku()
def is_host(self): def is_host(self):
return os.system(HOST_CHK_CMD) == 0 return os.system(HOST_CHK_CMD) == 0

View File

@ -10,7 +10,6 @@
import time import time
import subprocess import subprocess
import sonic_device_util
from ctypes import create_string_buffer from ctypes import create_string_buffer
try: try:

View File

@ -11,7 +11,6 @@
import os import os
import time import time
import subprocess import subprocess
import sonic_device_util
from ctypes import create_string_buffer from ctypes import create_string_buffer
try: try:

View File

@ -35,7 +35,7 @@
import time import time
import os.path import os.path
import sfputil as jnpr_sfp import sfputil as jnpr_sfp
from sonic_daemon_base.daemon_base import Logger from sonic_py_common.logger import Logger
from pprint import pprint from pprint import pprint
SYSLOG_IDENTIFIER = "sfputil" SYSLOG_IDENTIFIER = "sfputil"

View File

@ -42,7 +42,7 @@ try:
from sonic_platform_base.sonic_sfp.sff8472 import sff8472InterfaceId from sonic_platform_base.sonic_sfp.sff8472 import sff8472InterfaceId
from sonic_platform_base.sonic_sfp.sff8436 import sff8436Dom from sonic_platform_base.sonic_sfp.sff8436 import sff8436Dom
from sonic_platform_base.sonic_sfp.sff8436 import sff8436InterfaceId from sonic_platform_base.sonic_sfp.sff8436 import sff8436InterfaceId
from sonic_daemon_base.daemon_base import Logger from sonic_py_common.logger import Logger
from ctypes import create_string_buffer from ctypes import create_string_buffer
except ImportError as e: except ImportError as e:

View File

@ -8,7 +8,7 @@ try:
import io import io
import string import string
from ctypes import create_string_buffer from ctypes import create_string_buffer
from sonic_daemon_base.daemon_base import Logger from sonic_py_common.logger import Logger
except ImportError, e: except ImportError, e:
raise ImportError (str(e) + "- required module not found") raise ImportError (str(e) + "- required module not found")

View File

@ -21,7 +21,7 @@ try:
from cStringIO import StringIO from cStringIO import StringIO
from sonic_eeprom import eeprom_base from sonic_eeprom import eeprom_base
from sonic_eeprom import eeprom_tlvinfo from sonic_eeprom import eeprom_tlvinfo
from sonic_device_util import get_machine_info from sonic_py_common.device_info import get_machine_info
import subprocess import subprocess
except ImportError, e: except ImportError, e:
raise ImportError (str(e) + "- required module not found") raise ImportError (str(e) + "- required module not found")

View File

@ -97,12 +97,6 @@ sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y in
python-yaml \ python-yaml \
python-bitarray python-bitarray
# Install SONiC config engine Python package
CONFIG_ENGINE_WHEEL_NAME=$(basename {{config_engine_wheel_path}})
sudo cp {{config_engine_wheel_path}} $FILESYSTEM_ROOT/$CONFIG_ENGINE_WHEEL_NAME
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install $CONFIG_ENGINE_WHEEL_NAME
sudo rm -rf $FILESYSTEM_ROOT/$CONFIG_ENGINE_WHEEL_NAME
# Install Python client for Redis # Install Python client for Redis
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install "redis==3.5.3" sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install "redis==3.5.3"
@ -137,6 +131,24 @@ sudo cp {{swsssdk_py2_wheel_path}} $FILESYSTEM_ROOT/$SWSSSDK_PY2_WHEEL_NAME
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install $SWSSSDK_PY2_WHEEL_NAME sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install $SWSSSDK_PY2_WHEEL_NAME
sudo rm -rf $FILESYSTEM_ROOT/$SWSSSDK_PY2_WHEEL_NAME sudo rm -rf $FILESYSTEM_ROOT/$SWSSSDK_PY2_WHEEL_NAME
# Install sonic-py-common Python 2 package
SONIC_PY_COMMON_PY2_WHEEL_NAME=$(basename {{sonic_py_common_py2_wheel_path}})
sudo cp {{sonic_py_common_py2_wheel_path}} $FILESYSTEM_ROOT/$SONIC_PY_COMMON_PY2_WHEEL_NAME
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install $SONIC_PY_COMMON_PY2_WHEEL_NAME
sudo rm -rf $FILESYSTEM_ROOT/$SONIC_PY_COMMON_PY2_WHEEL_NAME
# Install sonic-py-common Python 3 package
SONIC_PY_COMMON_PY3_WHEEL_NAME=$(basename {{sonic_py_common_py3_wheel_path}})
sudo cp {{sonic_py_common_py3_wheel_path}} $FILESYSTEM_ROOT/$SONIC_PY_COMMON_PY3_WHEEL_NAME
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install $SONIC_PY_COMMON_PY3_WHEEL_NAME
sudo rm -rf $FILESYSTEM_ROOT/$SONIC_PY_COMMON_PY3_WHEEL_NAME
# Install SONiC config engine Python package
CONFIG_ENGINE_WHEEL_NAME=$(basename {{config_engine_wheel_path}})
sudo cp {{config_engine_wheel_path}} $FILESYSTEM_ROOT/$CONFIG_ENGINE_WHEEL_NAME
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install $CONFIG_ENGINE_WHEEL_NAME
sudo rm -rf $FILESYSTEM_ROOT/$CONFIG_ENGINE_WHEEL_NAME
# Install sonic-yang-models py3 package, install dependencies # Install sonic-yang-models py3 package, install dependencies
sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/libyang_*.deb sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/libyang_*.deb
sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/libyang-cpp_*.deb sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/libyang-cpp_*.deb
@ -163,18 +175,6 @@ sudo cp {{daemon_base_py2_wheel_path}} $FILESYSTEM_ROOT/$DAEMON_BASE_PY2_WHEEL_N
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install $DAEMON_BASE_PY2_WHEEL_NAME sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install $DAEMON_BASE_PY2_WHEEL_NAME
sudo rm -rf $FILESYSTEM_ROOT/$DAEMON_BASE_PY2_WHEEL_NAME sudo rm -rf $FILESYSTEM_ROOT/$DAEMON_BASE_PY2_WHEEL_NAME
# Install sonic-py-common Python 2 package
SONIC_PY_COMMON_PY2_WHEEL_NAME=$(basename {{sonic_py_common_py2_wheel_path}})
sudo cp {{sonic_py_common_py2_wheel_path}} $FILESYSTEM_ROOT/$SONIC_PY_COMMON_PY2_WHEEL_NAME
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install $SONIC_PY_COMMON_PY2_WHEEL_NAME
sudo rm -rf $FILESYSTEM_ROOT/$SONIC_PY_COMMON_PY2_WHEEL_NAME
# Install sonic-py-common Python 3 package
SONIC_PY_COMMON_PY3_WHEEL_NAME=$(basename {{sonic_py_common_py3_wheel_path}})
sudo cp {{sonic_py_common_py3_wheel_path}} $FILESYSTEM_ROOT/$SONIC_PY_COMMON_PY3_WHEEL_NAME
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install $SONIC_PY_COMMON_PY3_WHEEL_NAME
sudo rm -rf $FILESYSTEM_ROOT/$SONIC_PY_COMMON_PY3_WHEEL_NAME
# Install built Python Click package (and its dependencies via 'apt-get -y install -f') # Install built Python Click package (and its dependencies via 'apt-get -y install -f')
# Do this before installing sonic-utilities so that it doesn't attempt to install # Do this before installing sonic-utilities so that it doesn't attempt to install
# an older version as part of its dependencies # an older version as part of its dependencies

View File

@ -13,7 +13,7 @@ try:
import syslog import syslog
import re import re
import sonic_device_util from sonic_py_common import device_info
except ImportError as err: except ImportError as err:
raise ImportError("%s - required module not found" % str(err)) raise ImportError("%s - required module not found" % str(err))
@ -85,7 +85,7 @@ def find_software_reboot_cause():
if os.path.isfile(FIRST_BOOT_PLATFORM_FILE): if os.path.isfile(FIRST_BOOT_PLATFORM_FILE):
if software_reboot_cause == REBOOT_CAUSE_UNKNOWN: if software_reboot_cause == REBOOT_CAUSE_UNKNOWN:
version_info = sonic_device_util.get_sonic_version_info() version_info = device_info.get_sonic_version_info()
build_version = version_info['build_version'] if version_info else "unknown" build_version = version_info['build_version'] if version_info else "unknown"
software_reboot_cause += " (First boot of SONiC version {})".format(build_version) software_reboot_cause += " (First boot of SONiC version {})".format(build_version)
os.remove(FIRST_BOOT_PLATFORM_FILE) os.remove(FIRST_BOOT_PLATFORM_FILE)

View File

@ -11,7 +11,6 @@
import os import os
import time import time
import subprocess import subprocess
import sonic_device_util
from ctypes import create_string_buffer from ctypes import create_string_buffer
try: try:

View File

@ -11,9 +11,8 @@
try: try:
from sonic_platform_base.chassis_base import ChassisBase from sonic_platform_base.chassis_base import ChassisBase
from sonic_platform_base.component_base import ComponentBase from sonic_platform_base.component_base import ComponentBase
from sonic_device_util import get_machine_info from sonic_py_common import device_info
from sonic_device_util import get_platform_info from sonic_py_common.logger import Logger
from sonic_daemon_base.daemon_base import Logger
from os import listdir from os import listdir
from os.path import isfile, join from os.path import isfile, join
import sys import sys
@ -66,10 +65,10 @@ class Chassis(ChassisBase):
self.sku_name = self._get_sku_name() self.sku_name = self._get_sku_name()
self.platform_name = self._get_platform_name() self.platform_name = self._get_platform_name()
mi = get_machine_info() mi = device_info.get_machine_info()
if mi is not None: if mi is not None:
self.name = mi['onie_platform'] self.name = mi['onie_platform']
self.platform_name = get_platform_info(mi) self.platform_name = device_info.get_platform()
else: else:
self.name = self.sku_name self.name = self.sku_name
self.platform_name = self._get_platform_name() self.platform_name = self._get_platform_name()

View File

@ -11,7 +11,7 @@
try: try:
import os.path import os.path
from sonic_platform_base.psu_base import PsuBase from sonic_platform_base.psu_base import PsuBase
from sonic_daemon_base.daemon_base import Logger from sonic_py_common.logger import Logger
from sonic_platform.fan import Fan from sonic_platform.fan import Fan
from .led import PsuLed, SharedLed, ComponentFaultyIndicator from .led import PsuLed, SharedLed, ComponentFaultyIndicator
from .device_data import DEVICE_DATA from .device_data import DEVICE_DATA

View File

@ -21,7 +21,7 @@ try:
from sonic_platform_base.sonic_sfp.inf8628 import inf8628InterfaceId from sonic_platform_base.sonic_sfp.inf8628 import inf8628InterfaceId
from sonic_platform_base.sonic_sfp.qsfp_dd import qsfp_dd_InterfaceId from sonic_platform_base.sonic_sfp.qsfp_dd import qsfp_dd_InterfaceId
from sonic_platform_base.sonic_sfp.qsfp_dd import qsfp_dd_Dom from sonic_platform_base.sonic_sfp.qsfp_dd import qsfp_dd_Dom
from sonic_daemon_base.daemon_base import Logger from sonic_py_common.logger import Logger
from python_sdk_api.sxd_api import * from python_sdk_api.sxd_api import *
from python_sdk_api.sx_api import * from python_sdk_api.sx_api import *

View File

@ -9,7 +9,7 @@ import os
import time import time
import select import select
from python_sdk_api.sx_api import * from python_sdk_api.sx_api import *
from sonic_daemon_base.daemon_base import Logger from sonic_py_common.logger import Logger
# SFP status from PMAOS register # SFP status from PMAOS register
# 0x1 plug in # 0x1 plug in

View File

@ -10,7 +10,7 @@
try: try:
from sonic_platform_base.thermal_base import ThermalBase from sonic_platform_base.thermal_base import ThermalBase
from sonic_daemon_base.daemon_base import Logger from sonic_py_common.logger import Logger
from os import listdir from os import listdir
from os.path import isfile, join from os.path import isfile, join
import io import io

View File

@ -14,8 +14,14 @@ $(DOCKER_SONIC_VS)_DEPENDS += $(SWSS) \
$(DOCKER_SONIC_VS)_PYTHON_DEBS += $(SONIC_UTILS) $(DOCKER_SONIC_VS)_PYTHON_DEBS += $(SONIC_UTILS)
$(DOCKER_SONIC_VS)_PYTHON_WHEELS += $(SONIC_YANG_MODELS_PY3) # swsssdk is a dependency of sonic-py-common
$(DOCKER_SONIC_VS)_PYTHON_WHEELS += $(SONIC_YANG_MGMT_PY) # TODO: sonic-py-common should depend on swsscommon instead
$(DOCKER_SONIC_VS)_PYTHON_WHEELS += $(SWSSSDK_PY2) \
$(SWSSSDK_PY3) \
$(SONIC_PY_COMMON_PY2) \
$(SONIC_PY_COMMON_PY3) \
$(SONIC_YANG_MODELS_PY3) \
$(SONIC_YANG_MGMT_PY)
ifeq ($(INSTALL_DEBUG_TOOLS), y) ifeq ($(INSTALL_DEBUG_TOOLS), y)
$(DOCKER_SONIC_VS)_DEPENDS += $(SWSS_DBG) \ $(DOCKER_SONIC_VS)_DEPENDS += $(SWSS_DBG) \

View File

@ -49,6 +49,7 @@ RUN apt-get install -y net-tools \
python3-pip python3-pip
RUN pip install setuptools RUN pip install setuptools
RUN pip3 install setuptools
RUN pip install py2_ipaddress RUN pip install py2_ipaddress
RUN pip install six RUN pip install six
RUN pip install pyroute2==0.5.3 netifaces==0.10.7 RUN pip install pyroute2==0.5.3 netifaces==0.10.7

View File

@ -4,6 +4,7 @@ DOCKER_CONFIG_ENGINE_BUSTER = docker-config-engine-buster.gz
$(DOCKER_CONFIG_ENGINE_BUSTER)_PATH = $(DOCKERS_PATH)/docker-config-engine-buster $(DOCKER_CONFIG_ENGINE_BUSTER)_PATH = $(DOCKERS_PATH)/docker-config-engine-buster
$(DOCKER_CONFIG_ENGINE_BUSTER)_PYTHON_WHEELS += $(SWSSSDK_PY2) $(DOCKER_CONFIG_ENGINE_BUSTER)_PYTHON_WHEELS += $(SWSSSDK_PY2)
$(DOCKER_CONFIG_ENGINE_BUSTER)_PYTHON_WHEELS += $(SONIC_PY_COMMON_PY2)
$(DOCKER_CONFIG_ENGINE_BUSTER)_PYTHON_WHEELS += $(SONIC_CONFIG_ENGINE) $(DOCKER_CONFIG_ENGINE_BUSTER)_PYTHON_WHEELS += $(SONIC_CONFIG_ENGINE)
$(DOCKER_CONFIG_ENGINE_BUSTER)_LOAD_DOCKERS += $(DOCKER_BASE_BUSTER) $(DOCKER_CONFIG_ENGINE_BUSTER)_LOAD_DOCKERS += $(DOCKER_BASE_BUSTER)

View File

@ -3,6 +3,7 @@
DOCKER_CONFIG_ENGINE_STRETCH = docker-config-engine-stretch.gz DOCKER_CONFIG_ENGINE_STRETCH = docker-config-engine-stretch.gz
$(DOCKER_CONFIG_ENGINE_STRETCH)_PATH = $(DOCKERS_PATH)/docker-config-engine-stretch $(DOCKER_CONFIG_ENGINE_STRETCH)_PATH = $(DOCKERS_PATH)/docker-config-engine-stretch
$(DOCKER_CONFIG_ENGINE_STRETCH)_PYTHON_WHEELS += $(SWSSSDK_PY2) $(DOCKER_CONFIG_ENGINE_STRETCH)_PYTHON_WHEELS += $(SWSSSDK_PY2)
$(DOCKER_CONFIG_ENGINE_STRETCH)_PYTHON_WHEELS += $(SONIC_PY_COMMON_PY2)
$(DOCKER_CONFIG_ENGINE_STRETCH)_PYTHON_WHEELS += $(SONIC_CONFIG_ENGINE) $(DOCKER_CONFIG_ENGINE_STRETCH)_PYTHON_WHEELS += $(SONIC_CONFIG_ENGINE)
$(DOCKER_CONFIG_ENGINE_STRETCH)_LOAD_DOCKERS += $(DOCKER_BASE_STRETCH) $(DOCKER_CONFIG_ENGINE_STRETCH)_LOAD_DOCKERS += $(DOCKER_BASE_STRETCH)

View File

@ -3,6 +3,7 @@
DOCKER_CONFIG_ENGINE = docker-config-engine.gz DOCKER_CONFIG_ENGINE = docker-config-engine.gz
$(DOCKER_CONFIG_ENGINE)_PATH = $(DOCKERS_PATH)/docker-config-engine $(DOCKER_CONFIG_ENGINE)_PATH = $(DOCKERS_PATH)/docker-config-engine
$(DOCKER_CONFIG_ENGINE)_PYTHON_WHEELS += $(SWSSSDK_PY2) $(DOCKER_CONFIG_ENGINE)_PYTHON_WHEELS += $(SWSSSDK_PY2)
$(DOCKER_CONFIG_ENGINE)_PYTHON_WHEELS += $(SONIC_PY_COMMON_PY2)
$(DOCKER_CONFIG_ENGINE)_PYTHON_WHEELS += $(SONIC_CONFIG_ENGINE) $(DOCKER_CONFIG_ENGINE)_PYTHON_WHEELS += $(SONIC_CONFIG_ENGINE)
$(DOCKER_CONFIG_ENGINE)_LOAD_DOCKERS += $(DOCKER_BASE) $(DOCKER_CONFIG_ENGINE)_LOAD_DOCKERS += $(DOCKER_BASE)
SONIC_DOCKER_IMAGES += $(DOCKER_CONFIG_ENGINE) SONIC_DOCKER_IMAGES += $(DOCKER_CONFIG_ENGINE)

View File

@ -2,6 +2,6 @@
SONIC_CONFIG_ENGINE = sonic_config_engine-1.0-py2-none-any.whl SONIC_CONFIG_ENGINE = sonic_config_engine-1.0-py2-none-any.whl
$(SONIC_CONFIG_ENGINE)_SRC_PATH = $(SRC_PATH)/sonic-config-engine $(SONIC_CONFIG_ENGINE)_SRC_PATH = $(SRC_PATH)/sonic-config-engine
$(SONIC_CONFIG_ENGINE)_DEPENDS += $(SWSSSDK_PY2) $(SONIC_CONFIG_ENGINE)_DEPENDS += $(SWSSSDK_PY2) $(SONIC_PY_COMMON_PY2)
$(SONIC_CONFIG_ENGINE)_PYTHON_VERSION = 2 $(SONIC_CONFIG_ENGINE)_PYTHON_VERSION = 2
SONIC_PYTHON_WHEELS += $(SONIC_CONFIG_ENGINE) SONIC_PYTHON_WHEELS += $(SONIC_CONFIG_ENGINE)

View File

@ -2,4 +2,5 @@
SONIC_LEDD = python-sonic-ledd_1.1-1_all.deb SONIC_LEDD = python-sonic-ledd_1.1-1_all.deb
$(SONIC_LEDD)_SRC_PATH = $(SRC_PATH)/sonic-platform-daemons/sonic-ledd $(SONIC_LEDD)_SRC_PATH = $(SRC_PATH)/sonic-platform-daemons/sonic-ledd
$(SONIC_LEDD)_WHEEL_DEPENDS = $(SONIC_PY_COMMON_PY2)
SONIC_PYTHON_STDEB_DEBS += $(SONIC_LEDD) SONIC_PYTHON_STDEB_DEBS += $(SONIC_LEDD)

View File

@ -3,14 +3,15 @@
SONIC_PLATFORM_COMMON_PY2 = sonic_platform_common-1.0-py2-none-any.whl SONIC_PLATFORM_COMMON_PY2 = sonic_platform_common-1.0-py2-none-any.whl
$(SONIC_PLATFORM_COMMON_PY2)_SRC_PATH = $(SRC_PATH)/sonic-platform-common $(SONIC_PLATFORM_COMMON_PY2)_SRC_PATH = $(SRC_PATH)/sonic-platform-common
$(SONIC_PLATFORM_COMMON_PY2)_PYTHON_VERSION = 2 $(SONIC_PLATFORM_COMMON_PY2)_PYTHON_VERSION = 2
$(SONIC_PLATFORM_COMMON_PY2)_DEPENDS = $(SONIC_CONFIG_ENGINE) $(SONIC_PLATFORM_COMMON_PY2)_DEPENDS += $(SONIC_PY_COMMON_PY2) $(SONIC_CONFIG_ENGINE)
SONIC_PYTHON_WHEELS += $(SONIC_PLATFORM_COMMON_PY2) SONIC_PYTHON_WHEELS += $(SONIC_PLATFORM_COMMON_PY2)
# Als build sonic-platform-common into python3 wheel, so we can use PSU code in SNMP docker # Als build sonic-platform-common into python3 wheel, so we can use PSU code in SNMP docker
SONIC_PLATFORM_COMMON_PY3 = sonic_platform_common-1.0-py3-none-any.whl SONIC_PLATFORM_COMMON_PY3 = sonic_platform_common-1.0-py3-none-any.whl
$(SONIC_PLATFORM_COMMON_PY3)_SRC_PATH = $(SRC_PATH)/sonic-platform-common $(SONIC_PLATFORM_COMMON_PY3)_SRC_PATH = $(SRC_PATH)/sonic-platform-common
$(SONIC_PLATFORM_COMMON_PY3)_PYTHON_VERSION = 3 $(SONIC_PLATFORM_COMMON_PY3)_PYTHON_VERSION = 3
$(SONIC_PLATFORM_COMMON_PY3)_DEPENDS += $(SONIC_PY_COMMON_PY3)
# Synthetic dependency just to avoid race condition # Synthetic dependency just to avoid race condition
$(SONIC_PLATFORM_COMMON_PY3)_DEPENDS = $(SONIC_PLATFORM_COMMON_PY2) $(SONIC_PLATFORM_COMMON_PY3)_DEPENDS += $(SONIC_PLATFORM_COMMON_PY2)
$(SONIC_PLATFORM_COMMON_PY3)_TEST = n $(SONIC_PLATFORM_COMMON_PY3)_TEST = n
SONIC_PYTHON_WHEELS += $(SONIC_PLATFORM_COMMON_PY3) SONIC_PYTHON_WHEELS += $(SONIC_PLATFORM_COMMON_PY3)

View File

@ -2,4 +2,5 @@
SONIC_PSUD = python-sonic-psud_1.0-1_all.deb SONIC_PSUD = python-sonic-psud_1.0-1_all.deb
$(SONIC_PSUD)_SRC_PATH = $(SRC_PATH)/sonic-platform-daemons/sonic-psud $(SONIC_PSUD)_SRC_PATH = $(SRC_PATH)/sonic-platform-daemons/sonic-psud
$(SONIC_PSUD)_WHEEL_DEPENDS = $(SONIC_PY_COMMON_PY2)
SONIC_PYTHON_STDEB_DEBS += $(SONIC_PSUD) SONIC_PYTHON_STDEB_DEBS += $(SONIC_PSUD)

View File

@ -11,5 +11,8 @@ SONIC_PYTHON_WHEELS += $(SONIC_PY_COMMON_PY2)
SONIC_PY_COMMON_PY3 = sonic_py_common-1.0-py3-none-any.whl SONIC_PY_COMMON_PY3 = sonic_py_common-1.0-py3-none-any.whl
$(SONIC_PY_COMMON_PY3)_SRC_PATH = $(SRC_PATH)/sonic-py-common $(SONIC_PY_COMMON_PY3)_SRC_PATH = $(SRC_PATH)/sonic-py-common
$(SONIC_PY_COMMON_PY3)_DEPENDS += $(SWSSSDK_PY3) $(SONIC_PY_COMMON_PY3)_DEPENDS += $(SWSSSDK_PY3)
# Synthetic dependency to avoid building the Python 2 and 3 packages
# simultaneously and any potential conflicts which may arise
$(SONIC_PY_COMMON_PY3)_DEPENDS += $(SONIC_PY_COMMON_PY2)
$(SONIC_PY_COMMON_PY3)_PYTHON_VERSION = 3 $(SONIC_PY_COMMON_PY3)_PYTHON_VERSION = 3
SONIC_PYTHON_WHEELS += $(SONIC_PY_COMMON_PY3) SONIC_PYTHON_WHEELS += $(SONIC_PY_COMMON_PY3)

View File

@ -2,4 +2,5 @@
SONIC_SYSEEPROMD = python-sonic-syseepromd_1.0-1_all.deb SONIC_SYSEEPROMD = python-sonic-syseepromd_1.0-1_all.deb
$(SONIC_SYSEEPROMD)_SRC_PATH = $(SRC_PATH)/sonic-platform-daemons/sonic-syseepromd $(SONIC_SYSEEPROMD)_SRC_PATH = $(SRC_PATH)/sonic-platform-daemons/sonic-syseepromd
$(SONIC_SYSEEPROMD)_WHEEL_DEPENDS = $(SONIC_PY_COMMON_PY2)
SONIC_PYTHON_STDEB_DEBS += $(SONIC_SYSEEPROMD) SONIC_PYTHON_STDEB_DEBS += $(SONIC_SYSEEPROMD)

View File

@ -12,8 +12,13 @@
SONIC_UTILS = python-sonic-utilities_1.2-1_all.deb SONIC_UTILS = python-sonic-utilities_1.2-1_all.deb
$(SONIC_UTILS)_SRC_PATH = $(SRC_PATH)/sonic-utilities $(SONIC_UTILS)_SRC_PATH = $(SRC_PATH)/sonic-utilities
$(SONIC_UTILS)_DEBS_DEPENDS = $(LIBYANG) $(LIBYANG_CPP) $(LIBYANG_PY2) \ $(SONIC_UTILS)_DEBS_DEPENDS = $(LIBYANG) \
$(LIBYANG_CPP) \
$(LIBYANG_PY2) \
$(LIBYANG_PY3) $(LIBYANG_PY3)
$(SONIC_UTILS)_WHEEL_DEPENDS = $(SONIC_CONFIG_ENGINE) $(SONIC_YANG_MGMT_PY) \ $(SONIC_UTILS)_WHEEL_DEPENDS = $(SONIC_PY_COMMON_PY2) \
$(SONIC_PY_COMMON_PY3) \
$(SONIC_CONFIG_ENGINE) \
$(SONIC_YANG_MGMT_PY) \
$(SONIC_YANG_MODELS_PY3) $(SONIC_YANG_MODELS_PY3)
SONIC_PYTHON_STDEB_DEBS += $(SONIC_UTILS) SONIC_PYTHON_STDEB_DEBS += $(SONIC_UTILS)

View File

@ -2,4 +2,5 @@
SONIC_XCVRD = python-sonic-xcvrd_1.0-1_all.deb SONIC_XCVRD = python-sonic-xcvrd_1.0-1_all.deb
$(SONIC_XCVRD)_SRC_PATH = $(SRC_PATH)/sonic-platform-daemons/sonic-xcvrd $(SONIC_XCVRD)_SRC_PATH = $(SRC_PATH)/sonic-platform-daemons/sonic-xcvrd
$(SONIC_XCVRD)_WHEEL_DEPENDS = $(SONIC_PY_COMMON_PY2)
SONIC_PYTHON_STDEB_DEBS += $(SONIC_XCVRD) SONIC_PYTHON_STDEB_DEBS += $(SONIC_XCVRD)

View File

@ -2,6 +2,10 @@
SONIC_BGPCFGD = sonic_bgpcfgd-1.0-py2-none-any.whl SONIC_BGPCFGD = sonic_bgpcfgd-1.0-py2-none-any.whl
$(SONIC_BGPCFGD)_SRC_PATH = $(SRC_PATH)/sonic-bgpcfgd $(SONIC_BGPCFGD)_SRC_PATH = $(SRC_PATH)/sonic-bgpcfgd
$(SONIC_BGPCFGD)_DEPENDS += $(SWSSSDK_PY2) # These dependencies are only needed becuase they are dependencies
# of sonic-config-engine and bgpcfgd explicitly calls sonic-cfggen
# as part of its unit tests.
# TODO: Refactor unit tests so that these dependencies are not needed
$(SONIC_BGPCFGD)_DEPENDS += $(SWSSSDK_PY2) $(SONIC_PY_COMMON_PY2)
$(SONIC_BGPCFGD)_PYTHON_VERSION = 2 $(SONIC_BGPCFGD)_PYTHON_VERSION = 2
SONIC_PYTHON_WHEELS += $(SONIC_BGPCFGD) SONIC_PYTHON_WHEELS += $(SONIC_BGPCFGD)

View File

@ -14,7 +14,7 @@ from lxml import etree as ET
from lxml.etree import QName from lxml.etree import QName
from portconfig import get_port_config from portconfig import get_port_config
from sonic_device_util import get_npu_id_from_name from sonic_py_common.device_info import get_npu_id_from_name
"""minigraph.py """minigraph.py
version_added: "1.9" version_added: "1.9"

View File

@ -18,7 +18,15 @@ setup(name='sonic-config-engine',
url='https://github.com/Azure/sonic-buildimage', url='https://github.com/Azure/sonic-buildimage',
py_modules=['portconfig', 'minigraph', 'openconfig_acl', 'sonic_device_util', 'config_samples', 'redis_bcc', 'lazy_re'], py_modules=['portconfig', 'minigraph', 'openconfig_acl', 'sonic_device_util', 'config_samples', 'redis_bcc', 'lazy_re'],
scripts=['sonic-cfggen'], scripts=['sonic-cfggen'],
install_requires=['lxml', 'jinja2>=2.10', 'netaddr', 'ipaddr', 'pyyaml', 'pyangbind==0.6.0'], install_requires=[
'ipaddr',
'jinja2>=2.10',
'lxml',
'netaddr',
'pyyaml',
'pyangbind==0.6.0',
'sonic-py-common'
],
test_suite='setup.get_test_suite', test_suite='setup.get_test_suite',
data_files=[ data_files=[
('/usr/share/sonic/templates', glob.glob('data/*')), ('/usr/share/sonic/templates', glob.glob('data/*')),

View File

@ -41,11 +41,8 @@ from minigraph import parse_xml
from minigraph import parse_device_desc_xml from minigraph import parse_device_desc_xml
from minigraph import parse_asic_sub_role from minigraph import parse_asic_sub_role
from portconfig import get_port_config, get_port_config_file_name, get_breakout_mode from portconfig import get_port_config, get_port_config_file_name, get_breakout_mode
from sonic_device_util import get_machine_info from sonic_py_common.device_info import get_platform, get_system_mac
from sonic_device_util import get_platform_info from sonic_py_common.device_info import get_npu_id_from_name, is_multi_npu
from sonic_device_util import get_system_mac
from sonic_device_util import get_npu_id_from_name
from sonic_device_util import is_multi_npu
from config_samples import generate_sample_config from config_samples import generate_sample_config
from config_samples import get_available_config from config_samples import get_available_config
from swsssdk import SonicV2Connector, ConfigDBConnector, SonicDBConfig from swsssdk import SonicV2Connector, ConfigDBConnector, SonicDBConfig
@ -235,7 +232,7 @@ def main():
group.add_argument("-K", "--key", help="Lookup for a specific key") group.add_argument("-K", "--key", help="Lookup for a specific key")
args = parser.parse_args() args = parser.parse_args()
platform = get_platform_info(get_machine_info()) platform = get_platform()
db_kwargs = {} db_kwargs = {}
if args.redis_unix_sock_file != None: if args.redis_unix_sock_file != None:

View File

@ -56,7 +56,7 @@ class DaemonBase(Logger):
platform_util = None platform_util = None
# Get path to platform and hwsku # Get path to platform and hwsku
(platform_path, hwsku_path) = device_info.get_path_to_platform_and_hwsku() (platform_path, hwsku_path) = device_info.get_paths_to_platform_and_hwsku()
try: try:
module_file = "/".join([platform_path, "plugins", module_name + ".py"]) module_file = "/".join([platform_path, "plugins", module_name + ".py"])

View File

@ -1,5 +1,6 @@
import glob import glob
import os import os
import re
import subprocess import subprocess
import yaml import yaml
@ -57,22 +58,11 @@ def get_platform():
Returns: Returns:
A string containing the device's platform identifier A string containing the device's platform identifier
""" """
# First, attempt to retrieve the platform string from Config DB
config_db = ConfigDBConnector()
config_db.connect()
metadata = config_db.get_table('DEVICE_METADATA')
if 'localhost' in metadata and 'platform' in metadata['localhost']:
return metadata['localhost']['platform']
# If we were unable to retrieve the platform string from Config DB, attempt
# to retrieve it from the machine configuration file
machine_info = get_machine_info() machine_info = get_machine_info()
if machine_info: if machine_info:
if machine_info.has_key('onie_platform'): if 'onie_platform' in machine_info:
return machine_info['onie_platform'] return machine_info['onie_platform']
elif machine_info.has_key('aboot_platform'): elif 'aboot_platform' in machine_info:
return machine_info['aboot_platform'] return machine_info['aboot_platform']
return None return None

View File

@ -1,4 +1,5 @@
import os import os
import sys
import syslog import syslog
""" """