Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Get_optics() for EOS update to add 4 channel support #1581

Open
1 task done
susanhooks opened this issue Mar 10, 2022 · 4 comments
Open
1 task done

Get_optics() for EOS update to add 4 channel support #1581

susanhooks opened this issue Mar 10, 2022 · 4 comments

Comments

@susanhooks
Copy link

susanhooks commented Mar 10, 2022

Description of Issue/Question

Note: Please check https://guides.github.com/features/mastering-markdown/
to see how to properly format your request.

Did you follow the steps from https://github.com/napalm-automation/napalm#faq

(Place an x between the square brackets where applicable)

  • Yes
  • [] No

Setup

napalm version

(Paste verbatim output from pip freeze | grep napalm between quotes below)

napalm==3.3.1

Network operating system version

(Paste verbatim output from show version - or equivalent - between quotes below)

(any)
 'vendor': 'Arista',
'os_version': '4.24.3M-19566922.4243M',

Steps to Reproduce the Issue

run get_optics() method on Arista platform

Error Traceback

N/A - this is to open an issue about modifying the get_optics() method, or creating a new method to add fuller support for optics output. Currently the command run against pyeAPI is show interfaces transceiver . The output returns information on only the first channel. It would be useful to us to have information on all 4 of the optical channels. The command show interfaces transceiver dom provides more verbose feedback and support for all channels. Please see sample json below and let me know if this is something that would be accepted as an addition or modification to the EOS methods.

{"interfaces": {"Ethernet49/1": {"displayName": "Ethernet49/1",
    "mediaType": "100GBASE-CWDM4",
    "parameters": {"aggrRxPwr": {"channels": {"-": 6.305702433206449},
                                 "unit": "dBm"},
                   "aggrTxPwr": {"channels": {"-": 5.345337560051156},
                                 "unit": "dBm"},
                   "rxPower": {"channels": {"1": 0.5808422475092492,
                                            "2": -0.9566320779750512,
                                            "3": 1.107243543809048,
                                            "4": 0.15192041762834307},
                               "unit": "dBm"},
                   "temperature": {"channels": {"-": 43.85546875},
                                   "unit": "C"},
                   "txBias": {"channels": {"1": 34.256,
                                           "2": 34.256,
                                           "3": 34.256,
                                           "4": 34.256},
                              "unit": "mA"},
                   "txPower": {"channels": {"1": -0.5645602284654601,
                                            "2": -0.9663866374468135,
                                            "3": -0.23604163388120014,
                                            "4": -0.9783387072894847},
                               "unit": "dBm"},
                   "voltage": {"channels": {"-": 3.3251},
                               "unit": "V"}},
    "updateTime": 1646940176.398959,
    "vendorSn": "REDACTED"}}}
@bewing
Copy link
Member

bewing commented Mar 14, 2022

Per Arista TOI (registration required) this command was added in 4.21.5F. I do not know if it immediately had JSON support in the same release

https://www.arista.com/en/support/toi/eos-4-21-5f/14185-show-interfaces-transceiver-dom-thresholds

@bewing
Copy link
Member

bewing commented Mar 14, 2022

The current behavior appears to assign subsequent channels to sub-numbered interfaces:

switch#show int et53/1
Ethernet53/1 is up, line protocol is up (connected)
  Hardware is Ethernet, address is 985d.82d2.36c7
  Description: 100G
  Internet address is 192.0.2.1/31
  Broadcast address is 255.255.255.255
  IP MTU 1500 bytes (default) , BW 100000000 kbit
  Full-duplex, 100Gb/s, auto negotiation: off, uni-link: disabled

switch#show int et53/1 trans
If device is externally calibrated, only calibrated values are printed.
N/A: not applicable, Tx: transmit, Rx: receive.
mA: milliamperes, dBm: decibels (milliwatts).
                               Bias      Optical   Optical
          Temp       Voltage   Current   Tx Power  Rx Power
Port      (Celsius)  (Volts)   (mA)      (dBm)     (dBm)     Last Update
-----     ---------  --------  --------  --------  --------  -------------------
Et53/1     58.09      3.33      45.24    2.38      -1.60     0:00:03 ago
switch#show int et53/4 trans
If device is externally calibrated, only calibrated values are printed.
N/A: not applicable, Tx: transmit, Rx: receive.
mA: milliamperes, dBm: decibels (milliwatts).
                               Bias      Optical   Optical
          Temp       Voltage   Current   Tx Power  Rx Power
Port      (Celsius)  (Volts)   (mA)      (dBm)     (dBm)     Last Update
-----     ---------  --------  --------  --------  --------  -------------------
Et53/4     58.09      3.33      43.08    1.85      -1.57     0:00:01 ago

switch#show int et53/1 transceiver dom
Ch: Channel, N/A: not applicable, TX: transmit, RX: receive
mA: milliamperes, dBm: decibels (milliwatts), C: Celsius, V: Volts

Port 53
Last update: 0:00:03 ago
                                             Value
                                        ----------------
   Temperature                              58.09 C
   Voltage                                   3.33 V
   Aggregate TX Power                        8.23 dBm
   Aggregate RX Power                        4.15 dBm
Ethernet53/1
   TX bias current
      Channel        1                      45.24 mA
      Channel        2                      45.24 mA
      Channel        3                      45.24 mA
      Channel        4                      43.08 mA
   Optical TX power
      Channel        1                       2.38 dBm
      Channel        2                       2.40 dBm
      Channel        3                       2.19 dBm
      Channel        4                       1.85 dBm
   Optical RX power
      Channel        1                      -1.59 dBm
      Channel        2                      -1.70 dBm
      Channel        3                      -2.72 dBm
      Channel        4                      -1.57 dBm

Note that the TX bias for 53/1 and 53/4 in the original command correctly reflect the channels in the dom commands.

Changing this to report multiple channels on the base interface may be a breaking change.

@susanhooks
Copy link
Author

I think this would not be a breaking change, in that the output is the same, but with more channels. Since the command was extended, we could check for cli_version and add dom to the end of the show interfaces transceiver based on that.

cli_version is already available in the device object.
https://github.com/napalm-automation/napalm/blob/develop/napalm/eos/eos.py#L169

@susanhooks
Copy link
Author

susanhooks commented Mar 25, 2022

Would it be ok for me to submit this change for testing, or should I go down another path such as adding this as a new method?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants