Commit Graph

25 Commits

Author SHA1 Message Date
abdosi
e94bc63057 [multi-asic] optimize api that checks port/port-channel/bgp is internal (#7232)
Optimize the API's is_port_internal() , is_portchannel_internal() and is_bgp_internal ()to call get_entry(Redis hget) instead of get_table (Redis keys *)
2021-04-05 18:58:59 -07:00
abdosi
3a24e7f31f [multi-asic] Enhancing monit process checker for multi-asic. (#6100)
Added Support of process checker for work on multi-asic platforms.
2020-12-04 13:17:35 -08:00
judyjoseph
005702ba0e [multi-ASIC] util changes with the BGP_INTERNAL_NEIGHBOR table. (#5760)
- Why I did it
Update the routine is_bgp_session_internal() by checking the BGP_INTERNAL_NEIGHBOR table.
Additionally to address the review comment #5520 (comment)
Add timer settings as will in the internal session templates and keep it minimal as these sessions which will always be up.
Updates to the internal tests data + add all of it to template tests.

- How I did it
Updated the APIs and the template files.

- How to verify it
Verified the internal BGP sessions are displayed correctly with show commands with this API is_bgp_session_internal()
2020-11-10 12:53:49 -08:00
gechiang
55be531dd1 Added new method get_back_end_interface_set() to speed up back-end in… (#5731)
Added new MultiASIC util method "get_back_end_interface_set()" to speed up back-end interface check by allowing caller to cache the back-end intf into a set. This way the caller can use this set for all subsequent back-end interface check requests  instead of each time need to read from redis DB which become a scaling issue for cases such as checking for thousands of nexthop routes for filtering purpose.
2020-11-01 10:27:10 -08:00
Nazarii Hnydyn
2a608b9b88
[201911][sonic-py-common]: Fix syslog implicit min priority override (#5710)
* [sonic-py-common]: Fix syslog implicit min priority override

Signed-off-by: Nazarii Hnydyn <nazariig@nvidia.com>

* Fix review comments.

Signed-off-by: Nazarii Hnydyn <nazariig@nvidia.com>
2020-10-25 19:42:47 +02:00
judyjoseph
963bd7fdc4 [docker-teamd]: Add teamd as a depedent service to swss (#5628)
**- Why I did it**
On teamd docker restart, the swss and syncd needs to be restarted as there are dependent resources present.

**- How I did it**
Add the teamd as a dependent service for swss
Updated the docker-wait script to handle service and dependent services separately.
Handle the case of warm-restart for the dependent service

**- How to verify it**

Verified the following scenario's with the following testbed
VM1 ----------------------------[DUT 6100] -----------------------VM2,  ping traffic continuous between VMs

1. Stop teamd docker alone
      >  swss, syncd dockers seen going away
      >  The LAG reference count error messages seen for a while till swss docker stops.
      >  Dockers back up.

2. Enable WR mode for teamd. Stop teamd docker alone
      >  swss, syncd dockers not removed.
      >  The LAG reference count error messages not seen
      >  Repeated stop teamd docker test - same result, no effect on swss/syncd.

3. Stop swss docker.
      >  swss, teamd, syncd goes off - dockers comes back correctly, interfaces up

4. Enable WR mode for swss . Stop swss docker
      >  swss goes off not affecting syncd/teamd dockers.

5. Config reload
      > no reference counter error seen, dockers comes back correctly, with interfaces up

6. Warm reboot, observations below
	 > swss docker goes off first
	 > teamd + syncd goes off to the end of WR process.
 	 > dockers comes back up fine.
	 > ping traffic between VM's was NOT HIT

7. Fast reboot, observations below
	 > teamd goes off first ( **confirmed swss don't exit here** )
	 > swss goes off next
	 > syncd goes away at the end of the FR process
	 > dockers comes back up fine.
	 > there is a traffic HIT as per fast-reboot

8. Verified in multi-asic platform, the tests above other than WR/FB scenarios
2020-10-23 15:49:23 -07:00
judyjoseph
44abb50fed
Rellocating the yaml module import to reduce the memory usage in processes which (#5619)
With python 2.7, import yaml module was resulting in huge memory allocation in the heap per process. As an interim fix, moving the import yaml to the function which actually uses this module. This helps reduce the memory footprint of pmon docker, as it don't use the API's which need yaml processing. 

This issue not seen with importing yaml with python3, Need to be further analyzed, hence putting this fix in 201911 where we continue to use python2.7.
2020-10-14 12:33:48 -07:00
Abhishek Dosi
40676a062d Cherry-pick of Master PR
Fix sonic-util command failure on Multi-asic platforms. #5503

Signed-off-by: Abhishek Dosi <abdosi@microsoft.com>
2020-09-30 06:00:06 +00:00
bingwang-ms
5167bdaf11 [sonic_py_common] Fix exception in daemon_base.py (#5472)
There is a syntax error (self is missing for log_info and log_warning) in signal_handler in daemon_base.py, which causes an exception
2020-09-28 16:17:31 +00:00
Mahesh Maddikayala
05b2a9601e [CLI][Multi ASIC] update get_all_namespace to return current namespace (#5446) 2020-09-28 16:14:46 +00:00
judyjoseph
c06a9e4718 Platform monitor changes in daemon_base for multi_asic (#4932)
Adding namespace support for db connect API.
2020-09-06 15:28:17 +00:00
Renuka Manavalan
61d5ac0fbd [sonic-py-common] Add function to get hostname (#5265)
Added a function to get hostname. It get it from DEVICE_METADATA|localhost: hostname.
2020-09-04 21:17:33 +00:00
judyjoseph
cbc6de8878 [sonic-py-common] Relocate some functions from sonic-utilities (#5269)
* Relocate interface related common functions to py-common
* Add unit tests for interface API's.
2020-09-04 20:37:34 +00:00
judyjoseph
f8c4b8372b Add common functions applicable to single/multi asic platforms (#5224)
* Add common functions applicable to single/multi asic platforms
* Raise exception if invalid namespace is given as input.
2020-09-04 20:35:24 +00:00
judyjoseph
a518fe2e3b [sonic-py-common] Add interface utilities (#5113)
* Add sonic_interface.py in sonic-py-common for sonic interface utilities to keep this SONIC PREFIX naming convention in one place in py-common and all modules/applications use the functions defined here.
2020-09-04 20:34:18 +00:00
Abhishek Dosi
1beeea210c Updaed PR#5191 point (b) as we have moved to use
name in DB Connector.

sonic-platform-daemons is updated accordingly.

Signed-off-by: Abhishek Dosi <abdosi@microsoft.com>
2020-09-04 20:32:06 +00:00
Mahesh Maddikayala
389c5fe5ea [sonic-py-common][multi ASIC] API to get a list of frontend ports (#5221)
* [sonic-py-common][multi ASIC] utility to get a list of frontend ports from a given list of ports
2020-09-04 20:17:28 +00:00
abdosi
427382b54b
[201911] Multiasic cleanup of get_npu_device_id() (#5229)
* [201911] skip_thermalctld for VS platform as it is
not supported

root@vlab-01:/# supervisorctl status
dependent-startup                EXITED    Aug 18 06:22 AM
rsyslogd                         RUNNING   pid 18, uptime 0:12:26
start                            EXITED    Aug 18 06:22 AM
supervisor-proc-exit-listener    RUNNING   pid 13, uptime 0:12:27

Signed-off-by: Abhishek Dosi <abdosi@microsoft.com>

* [201911] after PR #https://github.com/Azure/sonic-buildimage/pull/5204
this function is no more needed so cleaning up.

Signed-off-by: Abhishek Dosi <abdosi@microsoft.com>
2020-08-20 17:47:04 -07:00
arlakshm
fe8ee92f83 Fix to prevent classification all portchannels is External (#5202)
Signed-off-by: Arvindsrinivasan Lakshmi Narasimhan <arlakshm@microsoft.com>
Fix the checks in the API is_port_channel_internal
2020-08-19 15:04:14 -07:00
judyjoseph
91c61e31ad
Updates to move the function get_asic_device_id() into the sonic-py-common. (#5204)
Update the name from get_npu_device_id() -to get_asic_device_id() and move from device_info.py, to the new file multi_asic.py in sonic-py-common so that it references to the correct valid constants.
2020-08-18 10:18:07 -07:00
arlakshm
7ca24c3580
[201911] Common functions for Multi ASIC CLIs (#5193)
* Port Multi Asic common changes to 201911

Signed-off-by: Arvindsrinivasan Lakshmi Narasimhan <arlakshm@microsoft.com>

* fix compilation issue

Signed-off-by: Arvindsrinivasan Lakshmi Narasimhan <arlakshm@microsoft.com>

* fix compilation issue

Signed-off-by: Arvindsrinivasan Lakshmi Narasimhan <arlakshm@microsoft.com>
2020-08-15 07:16:58 -07:00
abdosi
ef4d85855f
Two fixes: (#5191)
a) we should use get_platform() with new sonic_py-common package
b) In 201911 DB Connector is still using db id based constructor
as following PR https://github.com/Azure/sonic-buildimage/pull/4549
is not cherry-picked yet. So revert the change to use db is insatead of
db_name for now.

Signed-off-by: Abhishek Dosi <abdosi@microsoft.com>
2020-08-14 18:10:20 -07:00
Joe LeVeque
309a098b21
[201911][Python] Migrate applications/scripts to import sonic-py-common package (#5132)
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 to the 201911 branch in https://github.com/Azure/sonic-buildimage/pull/5063
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 a step toward resolving https://github.com/Azure/sonic-buildimage/issues/4999
2020-08-13 16:35:53 -07:00
Joe LeVeque
890e1f38cc [sonic-py-common] get_platform(): Refactor method of retrieving platform identifier (#5094)
Applications running in the host OS can read the platform identifier from /host/machine.conf. When loading configuration, sonic-config-engine *needs* to read the platform identifier from machine.conf, as it it responsible for populating the value in Config DB.

When an application is running inside a Docker container, the machine.conf file is not accessible, as the /host directory is not mounted. So we need to retrieve the platform identifier from Config DB if get_platform() is called from inside a Docker 
container. However, we can't simply check that we're running in a Docker container because the host OS of the SONiC virtual switch is running inside a Docker container. So I refactored `get_platform()` to:
    1. Read from the `PLATFORM` environment variable if it exists (which is defined in a virtual switch Docker container)
    2. Read from machine.conf if possible (works in the host OS of a standard SONiC image, critical for sonic-config-engine at boot)
    3. Read the value from Config DB (needed for Docker containers running in SONiC, as machine.conf is not accessible to them)

- Also fix typo in daemon_base.py
- Also changes to align `get_hwsku()` with `get_platform()`
2020-08-09 10:40:20 -07:00
Joe LeVeque
6556c40040
[201911] Introduce sonic-py-common package (#5063)
Consolidate common SONiC Python-language functionality into one shared package (sonic-py-common) and eliminate duplicate code.

The package currently includes four modules:
- daemon_base
- device_info
- logger
- task_base

NOTE: This is a combination of all changes from https://github.com/Azure/sonic-buildimage/pull/5003, https://github.com/Azure/sonic-buildimage/pull/5049 and some changes from https://github.com/Azure/sonic-buildimage/pull/5043 backported to align with the 201911 branch. As part of the 201911 port, I am not installing the Python 3 package in the base image or in the VS container, because we do not have pip3 installed, and we do not intend to migrate to Python 3 in 201911.
2020-08-03 11:50:06 -07:00