# Guia do Usuário - Wave 3
Este Guia do Usuário apresenta as entregas da Wave 3 e documenta o uso dos recursos disponibilizados pela aplicação `superviser` - que torna um TM1200G NETCONF-enabled.
- Features: Aplicação erlang e modelos yang
- aplicação `superviser` e `confd` integram a solução que permite gerenciar o TM1200G via NETCONF, RESTCONF e CLI
- suporte aos modelos YANG openconfig-platform (gestão de inventário) e openconfig-terminal-device (gestão de protocolos e recursos de transporte)
- DevOps: Jenkins e ambiente sistema de build
- Geração de imagem do TM1200G-netconf.
- Mudança no sistema de build e distribuição dos modelos Yang/FXS.
- Documentação: Guia e confluence
- Confluence: http://confluence.padtec.com.br:8090/pages/viewpage.action?pageId=181961191
## Introdução
A wave 3 consistiu em adicionar à aplicação `superviser-0.1.0` o suporte ao TM1200G a partir da versão de firmware 1.2.2. Ao fim da wave 3, a aplicação `superviser-0.1.0` é capaz de gerenciar os seguintes equipamentos:
- Chassis:
- 2U
- Supervisoras:
- SPVL-HB FwVersion 4.0.0RC3
- Aplicação de controle de fantray (FT-HC)
- Aplicação de controle das fontes de alimentação (PSU-HA e SSC-HC)
- Placas de linha:
- TD100G FwVersion 2.6.9
- TM200G FwVersion 3.0.0
- Chassis standalone:
- TM1200G FwVersion 1.3.0-1
- Aplicação de controle da fantray FT-10.
## Informações Importantes
### TM1200G-Netconf FwVersion 1.3.0
A modelagem e instrumentação do TM1200G para torná-lo NETCONF-enabled foram feitas a partir do firmware 1.2.2, sendo este o set de comandos suportado. Como entregável da Wave, foi gerada a versão de firmware 1.3.0-1 do TM1200G, que adiciona as seguintes features à imagem 1.2.2 do TM1200G:
- Aplicações `superviser` e `confd` e suas dependências
- Troca de modo de operação entre SDN e DEFAULT.
- Controle em runtime para iniciar e pausar as aplicações referentes ao modo de operação.
#### Artefatos da imagem `TM1200G-Netconf` e aplicação `superviser`
- As imagens TM1200G-Netconf estão disponíveis no link abaixo:
http://esbuild01/artifactory/list/test/tm1200g-netconf/
- Os pacotes somente da aplicação `superviser` estão disponíveis no link abaixo:
http://esbuild01/artifactory/build/sandbox.erlang.superviser/
#### Troca de modo de operação
O TM1200G 1.3.0-1 implementa um tipo de *feature toggle* que permite a troca de modo de operação *hitless*.
Existem 2 modos de operação para a o TM1200G:
- Modo DEFAULT: modo de operação para comunicação via ppm3 com a gerência.
- Modo SDN: modo de operação para comunicação via netconf.
No modo SDN, as aplicações ativas são:
- confd-7.4
- superviser-0.1.0
- padtec.es.proj.t1200g.app.ctl: aplicação de controle do TM1200G.
- padtec.es.proj.t1200g.app.fan: aplicação de gerenciamento da fantray
Para a troca de modo de operação, utiliza-se o script *tm1200g-ctl*. Através dele também é possível checar o modo de operação atual da placa.
**Nota**: Quando há uma mudança no modo de operação, todas as aplicações relacionadas ao modo atual serão paradas, e as as aplicações relacionadas ao modo escolhido serão inicializadas.
O script deve ser usado da seguinte forma para executar as ações descritas acima:
`tm1200g-ctl set-mode DEFAULT|SDN`: Troca o modo de operação para DEFAULT ou SDN.
`tm1200g-ctl get-mode`: Retorna o modo de operação atual.
### Chassis TM1200G standalone
O TM1200G é uma placa modelo standalone, ou seja, ela não é um chassis com slots físicos tradicionais. Porém, ela tem dois slots lógicos, que são:
- Slot 1 - Aplicação de controle do TM1200G.
- Slot 2 - Aplicação de controle da fan.
Para a aplicação superviser, é como se o TM1200G fosse um transponder qualquer conectado ao slot 1 de um chassis comum.
## Modelos YANG
### Openconfig
Repositório: sandbox/openconfig2
Revisão (sha1): df7d15f708ea3a463d0dd83d168762712a334dcc
| Modelo | Revisão |
|------------- | -------------|
| openconfig-alarm-types | 2018-11-21 |
| openconfig-alarms | 2019-07-09 |
| openconfig-extensions | 2018-10-17 |
| openconfig-if-ethernet | 2020-05-06 |
| openconfig-interfaces | 2019-11-19 |
| openconfig-lldp | 2018-11-21 |
| openconfig-lldp-types | 2018-11-21 |
| openconfig-platform | 2019-04-16 |
| openconfig-platform-augments | 2020-08-27 |
| openconfig-platform-linecard | 2020-05-10 |
| openconfig-platform-port | 2020-05-06 |
| openconfig-platform-transceiver | 2020-05-06 |
| openconfig-platform-types | 2019-06-03 |
| openconfig-terminal-device | 2020-05-09 |
| openconfig-terminal-device-augments | 2020-08-04 |
| openconfig-transport-line-common | 2019-06-03 |
| openconfig-transport-line-protection | 2018-11-21 |
| openconfig-transport-types | 2020-04-24 |
| openconfig-types | 2019-04-16 |
| openconfig-yang-types | 2018-11-21 |
### Padtec
Repositório: sandbox/yang
Revisão (sha1): 9c1b2347c6f89b69ddcdf906e650d6f6a638c2b3
| Modelo | Revisão |
|------------- | -------------|
| padtec-device | 2020-02-19 |
| padtec-device-types | 2020-03-12 |
| padtec-netconf-notifications | 2020-08-28 |
| padtec-platform-transceiver | 2020-08-05 |
| padtec-platform-types | 2020-08-12 |
| padtec-rpc | 2020-06-04 |
| padtec-terminal-device | 2020-05-11 |
| padtec-transport-types | 2020-06-26 |
## Configuração do TM1200G (config)
Abaixo são listados os paths subscritos, ou seja, os paths onde há a possibilidade de se executar configurações.
### Subscrições em `/interfaces/interface/`
- Habilitar interface
- Ip
- Prefix-length
| PRIORITY | PATH |
|------------- | -------------|
| 101 | /interfaces/interface{IfName}/subinterfaces/subinterface{IfIndex}/config/enabled |
| 103 | /interfaces/interface{IfName}/subinterfaces/subinterface{IfIndex}/oc-ip:ipv4/addresses/address{Ip}/config/ip |
| 104 | /interfaces/interface{IfName}/subinterfaces/subinterface{IfIndex}/oc-ip:ipv4/addresses/address{Ip}/config/prefix-length |
##### Exemplo
```bash
> show configuration interfaces interface dcn0_1_1 | display xpath
```
OUTPUT:
```bash
/interfaces/interface[name='dcn0_1_1']/config/name dcn0_1_1
/interfaces/interface[name='dcn0_1_1']/config/type dcn
/interfaces/interface[name='dcn0_1_1']/config enabled
/interfaces/interface[name='dcn0_1_1']/subinterfaces/subinterface[index='0']/config/index 0
/interfaces/interface[name='dcn0_1_1']/subinterfaces/subinterface[index='0']/oc-ip:ipv4/addresses/address[ip='172.30.0.128']/config/ip 172.30.0.128
/interfaces/interface[name='dcn0_1_1']/subinterfaces/subinterface[index='0']/oc-ip:ipv4/addresses/address[ip='172.30.0.128']/config/prefix-length 16
```
Note que outras "configs" além das subscrições foram exibidas. Esses elementos estão armazenados no CDB, mas não possuem função de configuração ou não devem ser editados pelo usuário. É o caso dos seguintes paths:
**Index**: é uma config de uso interno e não deve ser modificado.
```bash
/interfaces/interface[name='dcn0_1_1']/subinterfaces/subinterface[index='0']/config/index 0
```
### Subscrições em `/local-routes`
- Configura o default-gateway da placa
| PRIORITY | PATH |
|------------- | -------------|
| 105 | /local-routes/static-routes/static{Prefix}/config/prefix |
#### Exemplo
```bash
> show configuration local-routes | display xpath
```
OUTPUT:
```bash
/local-routes/static-routes/static[prefix='172.30.0.254/16']/config/prefix 172.30.0.254/16
```
### Subscrições em `/system`
- Configuração de data e hora do sistema
| PRIORITY | PATH |
|------------- | -------------|
| 110 | /system/config/current-datetime |
#### Exemplo
```bash
> show configuration system config
```
OUTPUT:
```bash
current-datetime 2021-01-26T21:00:08.904Z+00:00;
```
### Subscrições em `/components/component`
#### Configurações dos optical-channels
- Modo de Operação: configura taxa e modulação
- Chromatic Dispersion: configura janela de dispersão cromática
- Target output power: configura a potência de saída alvo para o canal óptico
- Phase encoding: configura o modo do phase enconding, que pode ter os valores **DIFF** ou **NON-DIFF**
**Nota:** Os modos de operação válidos são:
| Valor numérico de entrada para o confd | Modo de operação equivalente |
| -------------- | ---------------- |
| 0 | none |
| 1 | 100g_dp_bpsk |
| 2 | 100g_dp_p_qpsk |
| 3 | 100g_dp_qpsk |
| 4 | 200g_dp_qpsk |
| 5 | 200g_dp_p_8qam |
| 6 | 300gb_dp_8qam |
| 7 | 300gb_dp_16qam |
| 8 | 400gb_dp_16qam |
| 9 | 400gb_dp_32qam |
| 10 | 500gb_dp_32qam |
| 11 | 500gb_dp_64qam |
| 12 | 600gb_dp_64qam |
| 13 | 200gb_dp_16qam |
| 14 | 200gb_dp_32qam |
| 15 | 300gb_dp_24qam |
| 16 | 400gb_dp_64qam |
| PRIORITY | PATH |
| -------- | ---- |
| 100 | /components/component{OpticalChannel}/optical-channel/config/chromatic-dispersion-control/mode |
| 100 | /components/component{OpticalChannel}/optical-channel/config/chromatic-dispersion-control/low-search |
| 100 | /components/component{OpticalChannel}/optical-channel/config/chromatic-dispersion-control/fixed-or-high-search |
| 100 | /components/component{OpticalChannel}/optical-channel/config/target-output-power |
| 100 | /components/component{OpticalChannel}/optical-channel/config/phase-encoding |
| 100 | /components/component{OpticalChannel}/optical-channel/config/operational-mode |
##### Exemplo
```bash
> show configuration components component opticalchannel0_1_9 | display xpath
```
OUTPUT:
```bash
/components/component[name='opticalchannel0_1_9']/config/name opticalchannel0_1_9
/components/component[name='opticalchannel0_1_9']/oc-opt-term:optical-channel/config/target-output-power 0.0
/components/component[name='opticalchannel0_1_9']/oc-opt-term:optical-channel/config/operational-mode 12
/components/component[name='opticalchannel0_1_9']/oc-opt-term:optical-channel/config/openconfig-platform-augments:phase-encoding NON_DIFF
/components/component[name='opticalchannel0_1_9']/oc-opt-term:optical-channel/config/openconfig-platform-augments:chromatic-dispersion-control/mode AUTO
/components/component[name='opticalchannel0_1_9']/oc-opt-term:optical-channel/config/openconfig-platform-augments:chromatic-dispersion-control/fixed-or-high-search 3000
/components/component[name='opticalchannel0_1_9']/oc-opt-term:optical-channel/config/openconfig-platform-augments:chromatic-dispersion-control/low-search -3000
```
#### Configuração de parâmetros de transceiver - Porta CLIENT 1
**Nota**: Como forma de simplificar os exemplos, as configurações mostradas aqui foram obtidas de um transceiver cliente 1, porém são válidas para os outros transceivers cliente.
- Limiares de potênica de transmissão e recepção (TX e RX)
- Canal de operação DWDM
- Laser On/Off
- Auto Laser off
| PRIORITY | PATH |
| -------- | ----------------------------------------------------------------------------------------------------------------------- |
| 200 | /components/component{transceiver0_1_1_1}/transceiver/physical-channels/channel{0}/config/alo |
| 200 | /components/component{transceiver0_1_1_1}/transceiver/physical-channels/channel{0}/config/tx-channel |
| 200 | /components/component{transceiver0_1_1_1}/transceiver/physical-channels/channel{0}/config/tx-laser |
| 300 | /components/component{transceiver0_1_1_1}/transceiver/physical-channels/channel{0}/config/rx-power-threshold/alarm-enable |
| 300 | /components/component{transceiver0_1_1_1}/transceiver/physical-channels/channel{0}/config/tx-power-threshold/alarm-enable |
| 300 | /components/component{transceiver0_1_1_1}/transceiver/physical-channels/channel{0}/config/rx-power-threshold/max-power |
| 300 | /components/component{transceiver0_1_1_1}/transceiver/physical-channels/channel{0}/config/tx-power-threshold/max-power |
| 300 | /components/component{transceiver0_1_1_1}/transceiver/physical-channels/channel{0}/config/rx-power-threshold/min-power |
| 300 | /components/component{transceiver0_1_1_1}/transceiver/physical-channels/channel{0}/config/tx-power-threshold/min-power |
##### Exemplo
```bash
> show configuration components component transceiver0_1_1_1 transceiver physical-channels channel | display prefixes | display xpath
```
OUTPUT:
```bash
/oc-platform:components/oc-platform:component[oc-platform:name='transceiver0_1_1_1']/oc-transceiver:transceiver/oc-transceiver:physical-channels/oc-transceiver:channel[oc-transceiver:index='0']/oc-transceiver:config/oc-transceiver:index 0
/oc-platform:components/oc-platform:component[oc-platform:name='transceiver0_1_1_1']/oc-transceiver:transceiver/oc-transceiver:physical-channels/oc-transceiver:channel[oc-transceiver:index='0']/oc-transceiver:config/oc-transceiver:tx-laser true
/oc-platform:components/oc-platform:component[oc-platform:name='transceiver0_1_1_1']/oc-transceiver:transceiver/oc-transceiver:physical-channels/oc-transceiver:channel[oc-transceiver:index='0']/oc-transceiver:config/openconfig-platform-augments:alo OFF
/oc-platform:components/oc-platform:component[oc-platform:name='transceiver0_1_1_1']/oc-transceiver:transceiver/oc-transceiver:physical-channels/oc-transceiver:channel[oc-transceiver:index='0']/oc-transceiver:config/openconfig-platform-augments:rx-power-threshold/openconfig-platform-augments:min-power -30.0
/oc-platform:components/oc-platform:component[oc-platform:name='transceiver0_1_1_1']/oc-transceiver:transceiver/oc-transceiver:physical-channels/oc-transceiver:channel[oc-transceiver:index='0']/oc-transceiver:config/openconfig-platform-augments:rx-power-threshold/openconfig-platform-augments:max-power 5.0
/oc-platform:components/oc-platform:component[oc-platform:name='transceiver0_1_1_1']/oc-transceiver:transceiver/oc-transceiver:physical-channels/oc-transceiver:channel[oc-transceiver:index='0']/oc-transceiver:config/openconfig-platform-augments:rx-power-threshold/openconfig-platform-augments:alarm-enable false
/oc-platform:components/oc-platform:component[oc-platform:name='transceiver0_1_1_1']/oc-transceiver:transceiver/oc-transceiver:physical-channels/oc-transceiver:channel[oc-transceiver:index='0']/oc-transceiver:config/openconfig-platform-augments:tx-power-threshold/openconfig-platform-augments:min-power 0.0
/oc-platform:components/oc-platform:component[oc-platform:name='transceiver0_1_1_1']/oc-transceiver:transceiver/oc-transceiver:physical-channels/oc-transceiver:channel[oc-transceiver:index='0']/oc-transceiver:config/openconfig-platform-augments:tx-power-threshold/openconfig-platform-augments:max-power 5.0
/oc-platform:components/oc-platform:component[oc-platform:name='transceiver0_1_1_1']/oc-transceiver:transceiver/oc-transceiver:physical-channels/oc-transceiver:channel[oc-transceiver:index='0']/oc-transceiver:config/openconfig-platform-augments:tx-power-threshold/openconfig-platform-augments:alarm-enable false
/oc-platform:components/oc-platform:component[oc-platform:name='transceiver0_1_1_1']/oc-transceiver:transceiver/oc-transceiver:physical-channels/oc-transceiver:channel[oc-transceiver:index='1']/oc-transceiver:config/oc-transceiver:index 1
/oc-platform:components/oc-platform:component[oc-platform:name='transceiver0_1_1_1']/oc-transceiver:transceiver/oc-transceiver:physical-channels/oc-transceiver:channel[oc-transceiver:index='2']/oc-transceiver:config/oc-transceiver:index 2
/oc-platform:components/oc-platform:component[oc-platform:name='transceiver0_1_1_1']/oc-transceiver:transceiver/oc-transceiver:physical-channels/oc-transceiver:channel[oc-transceiver:index='3']/oc-transceiver:config/oc-transceiver:index 3
```
**Nota**: Outras "configs" além das subscrições foram exibidas. Esses elementos estão armezenados no CDB, mas não possuem função de configuração ou não devem ser editados pelo usuário.
#### Configuração de parâmetros de transceiver - Porta LINE 1
**Nota**: Como forma de simplificar os exemplos, as configurações mostradas aqui foram obtidas de um transceiver rede 1, porém são válidas para os outros transceivers rede.
- Limiares de potênica de transmissão e recepção (TX e RX)
- Canal de operação DWDM
- Laser On/Off
| PRIORITY | PATH |
| -------- | ----------------------------------------------------------------------------------------------------------------------- |
| 200 | /components/component{transceiver0_1_9}/transceiver/physical-channels/channel{0}/config/tx-channel |
| 200 | /components/component{transceiver0_1_9}/transceiver/physical-channels/channel{0}/config/tx-laser |
| 300 | /components/component{transceiver0_1_9}/transceiver/physical-channels/channel{0}/config/rx-power-threshold/alarm-enable |
| 300 | /components/component{transceiver0_1_9}/transceiver/physical-channels/channel{0}/config/tx-power-threshold/alarm-enable |
| 300 | /components/component{transceiver0_1_9}/transceiver/physical-channels/channel{0}/config/rx-power-threshold/max-power |
| 300 | /components/component{transceiver0_1_9}/transceiver/physical-channels/channel{0}/config/tx-power-threshold/max-power |
| 300 | /components/component{transceiver0_1_9}/transceiver/physical-channels/channel{0}/config/rx-power-threshold/min-power |
| 300 | /components/component{transceiver0_1_9}/transceiver/physical-channels/channel{0}/config/tx-power-threshold/min-power |
##### Exemplo
```bash
> show configuration components component transceiver0_1_9 transceiver physical-channels channel | display prefixes | display xpath
```
OUTPUT:
```bash
/oc-platform:components/oc-platform:component[oc-platform:name='transceiver0_1_9']/oc-transceiver:transceiver/oc-transceiver:physical-channels/oc-transceiver:channel[oc-transceiver:index='0']/oc-transceiver:config/oc-transceiver:index 0
/oc-platform:components/oc-platform:component[oc-platform:name='transceiver0_1_9']/oc-transceiver:transceiver/oc-transceiver:physical-channels/oc-transceiver:channel[oc-transceiver:index='0']/oc-transceiver:config/oc-transceiver:tx-laser false
/oc-platform:components/oc-platform:component[oc-platform:name='transceiver0_1_9']/oc-transceiver:transceiver/oc-transceiver:physical-channels/oc-transceiver:channel[oc-transceiver:index='0']/oc-transceiver:config/openconfig-platform-augments:rx-power-threshold/openconfig-platform-augments:min-power -30.0
/oc-platform:components/oc-platform:component[oc-platform:name='transceiver0_1_9']/oc-transceiver:transceiver/oc-transceiver:physical-channels/oc-transceiver:channel[oc-transceiver:index='0']/oc-transceiver:config/openconfig-platform-augments:rx-power-threshold/openconfig-platform-augments:max-power 5.0
/oc-platform:components/oc-platform:component[oc-platform:name='transceiver0_1_9']/oc-transceiver:transceiver/oc-transceiver:physical-channels/oc-transceiver:channel[oc-transceiver:index='0']/oc-transceiver:config/openconfig-platform-augments:rx-power-threshold/openconfig-platform-augments:alarm-enable false
/oc-platform:components/oc-platform:component[oc-platform:name='transceiver0_1_9']/oc-transceiver:transceiver/oc-transceiver:physical-channels/oc-transceiver:channel[oc-transceiver:index='0']/oc-transceiver:config/openconfig-platform-augments:tx-power-threshold/openconfig-platform-augments:min-power 0.0
/oc-platform:components/oc-platform:component[oc-platform:name='transceiver0_1_9']/oc-transceiver:transceiver/oc-transceiver:physical-channels/oc-transceiver:channel[oc-transceiver:index='0']/oc-transceiver:config/openconfig-platform-augments:tx-power-threshold/openconfig-platform-augments:max-power 5.0
/oc-platform:components/oc-platform:component[oc-platform:name='transceiver0_1_9']/oc-transceiver:transceiver/oc-transceiver:physical-channels/oc-transceiver:channel[oc-transceiver:index='0']/oc-transceiver:config/openconfig-platform-augments:tx-power-threshold/openconfig-platform-augments:alarm-enable false
/oc-platform:components/oc-platform:component[oc-platform:name='transceiver0_1_9']/oc-transceiver:transceiver/oc-transceiver:physical-channels/oc-transceiver:channel[oc-transceiver:index='0']/oc-transceiver:config/openconfig-platform-augments:tx-channel 0
```
**Nota**: Outras "configs" além das subscrições foram exibidas. Esses elementos estão armezenados no CDB, mas não possuem função de configuração ou não devem ser editados pelo usuário.
### Subscrições em `/terminal-device`
Para entender melhor as configurações relacionadas com os logical-channels, é importante ter a tabela abaixo em mãos:

#### Configuração de Loopback
As subscrições de paths para configuração de loopback estão disponíveis somente para os logica-channels das camadas 100GE e OTUj:
- **100GE**: 1011103, 1021203, 1051503, 1051506, 1061603, 1061606, 1031303, 1041403, 1071703, 1071706, 1081803, 1081806.
- **OTUj**: 1090900, 1101000.
O path para configuração de loopback é mostrado na tabela abaixo:
| PRIORITY | PATH |
|------------- | -------------|
| 100 | /terminal-device/logical-channels/channel{LogicalChannel}/config/loopback-mode |
##### Exemplo
```bash
> show configuration terminal-device logical-channels channel config loopback-mode | display xpath
```
OUTPUT:
```bash
/terminal-device/logical-channels/channel[index='1011103']/config/loopback-mode NONE
/terminal-device/logical-channels/channel[index='1021203']/config/loopback-mode NONE
/terminal-device/logical-channels/channel[index='1031303']/config/loopback-mode NONE
/terminal-device/logical-channels/channel[index='1041403']/config/loopback-mode NONE
/terminal-device/logical-channels/channel[index='1051503']/config/loopback-mode NONE
/terminal-device/logical-channels/channel[index='1051506']/config/loopback-mode NONE
/terminal-device/logical-channels/channel[index='1061603']/config/loopback-mode NONE
/terminal-device/logical-channels/channel[index='1061606']/config/loopback-mode NONE
/terminal-device/logical-channels/channel[index='1071703']/config/loopback-mode NONE
/terminal-device/logical-channels/channel[index='1071706']/config/loopback-mode NONE
/terminal-device/logical-channels/channel[index='1081803']/config/loopback-mode NONE
/terminal-device/logical-channels/channel[index='1081806']/config/loopback-mode NONE
/terminal-device/logical-channels/channel[index='1090900']/config/loopback-mode NONE
/terminal-device/logical-channels/channel[index='1101000']/config/loopback-mode NONE
```
#### Configuração de OTN
As subscrições de paths para configuração OTN estão disponíveis somente para os logical-channels da camada OTU4:
- **OTU4**: 1091101, 1091201, 1091501, 1091504, 1091601, 1091604, 1101301, 1101401, 1101701, 1101704, 1101801, 1101804.
Os paths para configurações OTN são mostrados na tabela abaixo:
| PRIORITY | PATH |
|------------- | -------------|
| 100 | /terminal-device/logical-channels/channel{LogicalChannel}/otn/config/timactenable |
| 100 | /terminal-device/logical-channels/channel{LogicalChannel}/otn/config/timdetmo |
| 100 | /terminal-device/logical-channels/channel{LogicalChannel}/otn/config/tti-msg-transmit |
| 100 | /terminal-device/logical-channels/channel{LogicalChannel}/otn/config/tti-msg-expected |
##### Exemplo
```bash
> show configuration terminal-device logical-channels channel 1091101 otn config | display xpath
```
OUTPUT:
```bash
/terminal-device/logical-channels/channel[index='1091101']/otn/config/tti-msg-transmit "0PADTEC-SAPI-SM 0PADTEC-DAPI-SM PADTEC Operator Specific SM = 32"
/terminal-device/logical-channels/channel[index='1091101']/otn/config/tti-msg-expected "0PADTEC-SAPI-SM 0PADTEC-DAPI-SM "
/terminal-device/logical-channels/channel[index='1091101']/otn/config/oc-opt-term-augments:timdetmo OFF
/terminal-device/logical-channels/channel[index='1091101']/otn/config/oc-opt-term-augments:timactenable false
```
### Configuração Default
A configuração default encontra-se no Anexo I, no fim deste documento.
## Estado Operacional (state) e Inventário
### Inventário: FT-10
A fantray do TM1200G tem uma memória de inventário onde ficam salvas suas informações de part-number, serial-number, versão de firmware e de hardware, essas informações são adquiridas pelo get de discovery enviado ao slot 2, e são salvas no inventário. Outras informações como nome do componente e tipo, são obtidas pelo inventário JSON.
```bash
components component fan0_2
state name fan0_2
state type FAN
state hardware-version A.1.3...........
state firmware-version 1.0.0...........
state serial-no 52
state part-no 2632
state empty false
state equipment-failure false
state equipment-mismatch false
linecard state power-admin-state POWER_ENABLED
linecard state slot-admin-state SLOT_ENABLED
```
### Inventário: TM1200G
Nesta seção constam os elementos de `state` para o TM1200G (state comum).
Alguns paths inválidos são listados. Eles se tratam de paths que não fazem sentido para o componente ou ainda não foram instrumentados. A presença destes paths no `state` não afetam o funcionamento do sistema.
#### Estrutura de componentes `openconfig-platform`
O TM1200G é representado pela seguinte estrutura de componentes/subcomponentes:

#### Linecard
###### Discovery, Inventário e State
```bash
/components/component[name='linecard0_1']/state/name linecard0_1
/components/component[name='linecard0_1']/state/type LINECARD
/components/component[name='linecard0_1']/state/hardware-version A.1.5...........
/components/component[name='linecard0_1']/state/firmware-version 1.3.0-1.........
/components/component[name='linecard0_1']/state/serial-no 41
/components/component[name='linecard0_1']/state/part-no 2631
/components/component[name='linecard0_1']/state/empty false
/components/component[name='linecard0_1']/state/temperature/instant 22.6
/components/component[name='linecard0_1']/state/oc-alarms:equipment-failure false
/components/component[name='linecard0_1']/state/oc-alarms:equipment-mismatch false
/components/component[name='linecard0_1']/subcomponents/subcomponent[name='fabric0_1_1']/state/name fabric0_1_1
/components/component[name='linecard0_1']/subcomponents/subcomponent[name='port0_1_10']/state/name port0_1_10
/components/component[name='linecard0_1']/subcomponents/subcomponent[name='port0_1_1_1']/state/name port0_1_1_1
/components/component[name='linecard0_1']/subcomponents/subcomponent[name='port0_1_2']/state/name port0_1_2
/components/component[name='linecard0_1']/subcomponents/subcomponent[name='port0_1_2_1']/state/name port0_1_2_1
/components/component[name='linecard0_1']/subcomponents/subcomponent[name='port0_1_32']/state/name port0_1_32
/components/component[name='linecard0_1']/subcomponents/subcomponent[name='port0_1_3_1']/state/name port0_1_3_1
/components/component[name='linecard0_1']/subcomponents/subcomponent[name='port0_1_4_1']/state/name port0_1_4_1
/components/component[name='linecard0_1']/subcomponents/subcomponent[name='port0_1_5_1']/state/name port0_1_5_1
/components/component[name='linecard0_1']/subcomponents/subcomponent[name='port0_1_5_2']/state/name port0_1_5_2
/components/component[name='linecard0_1']/subcomponents/subcomponent[name='port0_1_6_1']/state/name port0_1_6_1
/components/component[name='linecard0_1']/subcomponents/subcomponent[name='port0_1_6_2']/state/name port0_1_6_2
/components/component[name='linecard0_1']/subcomponents/subcomponent[name='port0_1_7_1']/state/name port0_1_7_1
/components/component[name='linecard0_1']/subcomponents/subcomponent[name='port0_1_7_2']/state/name port0_1_7_2
/components/component[name='linecard0_1']/subcomponents/subcomponent[name='port0_1_8_1']/state/name port0_1_8_1
/components/component[name='linecard0_1']/subcomponents/subcomponent[name='port0_1_8_2']/state/name port0_1_8_2
/components/component[name='linecard0_1']/subcomponents/subcomponent[name='port0_1_9']/state/name port0_1_9
/components/component[name='linecard0_1']/oc-linecard:linecard/state/power-admin-state POWER_ENABLED
/components/component[name='linecard0_1']/oc-linecard:linecard/state/openconfig-platform-augments:slot-admin-state SLOT_ENABLED
```
- equipment-mismatch:
- false: o equipamento inserido no slot é suportato
- true: o equipamento inserido no slot NÃO é suportato
- equipment-failure:
- false: leitura dos dados operacionais está funcionando
- true: erro na leitura dos dados operacionais
- slot-admin-state:
- **Nota**: Não há como desabilitar o slot para o TM1200G, pois a nível lógico, o slot 1 representa o próprio TM1200G standalone.
- SLOT_ENABLED: o slot pode ser gerenciado
- SLOT_DISABLED: o slot está desativado
#### Porta Cliente
O exemplo mostrado refere-se à porta cliente 1, porém os paths e valores são válidos para todas as portas cliente.
###### Inventário e State
```bash
/components/component[name='port0_1_1_1']/state/name port0_1_1_1
/components/component[name='port0_1_1_1']/state/type PORT
/components/component[name='port0_1_1_1']/state/empty false
/components/component[name='port0_1_1_1']/state/oc-alarms:equipment-failure false
/components/component[name='port0_1_1_1']/state/oc-alarms:equipment-mismatch false
/components/component[name='port0_1_1_1']/subcomponents/subcomponent[name='transceiver0_1_1_1']/state/name transceiver0_1_1_1
/components/component[name='port0_1_1_1']/port/state/openconfig-platform-augments:led-rx RED
/components/component[name='port0_1_1_1']/port/state/openconfig-platform-augments:led-tx RED
/components/component[name='port0_1_1_1']/port/oc-line-com:optical-port/state/optical-port-type TERMINAL_CLIENT
/components/component[name='port0_1_1_1']/oc-linecard:linecard/state/power-admin-state POWER_ENABLED
/components/component[name='port0_1_1_1']/oc-linecard:linecard/state/openconfig-platform-augments:slot-admin-state SLOT_ENABLED
```
#### Porta Rede
O exemplo mostrado refere-se à porta rede 1, porém os paths e valores são válidos para todas as portas rede.
###### Inventário
```bash
/components/component[name='port0_1_9']/state/name port0_1_9
/components/component[name='port0_1_9']/state/type PORT
/components/component[name='port0_1_9']/state/empty false
/components/component[name='port0_1_9']/state/oc-alarms:equipment-failure false
/components/component[name='port0_1_9']/state/oc-alarms:equipment-mismatch false
/components/component[name='port0_1_9']/subcomponents/subcomponent[name='opticalchannel0_1_9']/state/name opticalchannel0_1_9
/components/component[name='port0_1_9']/subcomponents/subcomponent[name='transceiver0_1_9']/state/name transceiver0_1_9
```
###### Status dos Leds
```bash
/components/component[name='port0_1_9']/port/state/openconfig-platform-augments:led-rx RED
/components/component[name='port0_1_9']/port/state/openconfig-platform-augments:led-tx RED
```
###### Tipo da Porta
```bash
/components/component[name='port0_1_9']/port/oc-line-com:optical-port/state/optical-port-type TERMINAL_LINE
```
###### LOS
```bash
/components/component[name='port0_1_9']/port/oc-line-com:optical-port/state/openconfig-platform-augments:port-los true
```
#### Transceiver
##### QSFP28
O exemplo mostrado refere-se ao transceiver cliente 1.1, porém os paths e valores são válidos para todos QSFP28 usados em portas cliente.
###### Inventário
```bash
/components/component[name='transceiver0_1_1_1']/state/name transceiver0_1_1_1
/components/component[name='transceiver0_1_1_1']/state/type TRANSCEIVER
/components/component[name='transceiver0_1_1_1']/state/empty false
/components/component[name='transceiver0_1_1_1']/state/oc-alarms:equipment-failure false
/components/component[name='transceiver0_1_1_1']/state/oc-alarms:equipment-mismatch false
/components/component[name='transceiver0_1_1_1']/oc-linecard:linecard/state/power-admin-state POWER_ENABLED
/components/component[name='transceiver0_1_1_1']/oc-linecard:linecard/state/openconfig-platform-augments:slot-admin-state SLOT_ENABLED
```
###### Temperatura
```bash
/components/component[name='transceiver0_1_1_1']/state/temperature/instant 29.2
```
###### Transceiver Info
```bash
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/present PRESENT
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/form-factor QSFP28
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/vendor "FINISAR CORP. "
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/vendor-part "FTLC1154SDPL "
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/vendor-rev A0
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/serial-no "U0FA76M "
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/date-code "181019 "
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/pad-transceiver:qsfp28-info/nominal-wavelength 0.0
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/pad-transceiver:qsfp28-info/temp-high-alarm 75
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/pad-transceiver:qsfp28-info/temp-low-alarm -5
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/pad-transceiver:qsfp28-info/temp-high-warning 70
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/pad-transceiver:qsfp28-info/temp-low-warning 0
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/pad-transceiver:qsfp28-info/rx-power-high-alarm 0
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/pad-transceiver:qsfp28-info/rx-power-low-alarm 0
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/pad-transceiver:qsfp28-info/rx-power-high-warning 0
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/pad-transceiver:qsfp28-info/rx-power-low-warning 0
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/pad-transceiver:qsfp28-info/tx-bias-high-alarm 0
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/pad-transceiver:qsfp28-info/tx-bias-low-alarm 0
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/pad-transceiver:qsfp28-info/tx-bias-high-warning 0
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/pad-transceiver:qsfp28-info/tx-bias-low-warning 0
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/pad-transceiver:qsfp28-info/tx-power-high-alarm 0
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/pad-transceiver:qsfp28-info/tx-power-low-alarm 0
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/pad-transceiver:qsfp28-info/tx-power-high-warning 0
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/pad-transceiver:qsfp28-info/tx-power-low-warning 0
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/pad-transceiver:qsfp28-info/extended-compliance 3
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/pad-transceiver:qsfp28-info/identifier 17
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/state/pad-transceiver:qsfp28-info/specification-compliance 0
```
###### Physical Channels - Lanes
O QSFP28 é representado por 4 lanes.
State global é acessado pela lane `index = 0`.
State por lane, acessado na respectiva lane.
```bash
## LANE 0 - GLOBAL
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/physical-channels/channel[index='0']/state/tx-laser false
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/physical-channels/channel[index='0']/state/openconfig-platform-augments:alo OFF
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/physical-channels/channel[index='0']/state/openconfig-platform-augments:rx-power-threshold/min-power -30.0
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/physical-channels/channel[index='0']/state/openconfig-platform-augments:rx-power-threshold/max-power 5.0
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/physical-channels/channel[index='0']/state/openconfig-platform-augments:rx-power-threshold/alarm-enable false
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/physical-channels/channel[index='0']/state/openconfig-platform-augments:tx-power-threshold/min-power 0.0
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/physical-channels/channel[index='0']/state/openconfig-platform-augments:tx-power-threshold/max-power 5.0
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/physical-channels/channel[index='0']/state/openconfig-platform-augments:tx-power-threshold/alarm-enable false
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/physical-channels/channel[index='0']/state/pad-transceiver:tx-laser-off-reason [ ADMINISTRATIVE ]
## LANE 0
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/physical-channels/channel[index='0']/state/output-power/instant -40.0
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/physical-channels/channel[index='0']/state/input-power/instant -40.0
# LANE 1
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/physical-channels/channel[index='1']/state/output-power/instant -40.0
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/physical-channels/channel[index='1']/state/input-power/instant -40.0
# LANE 2
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/physical-channels/channel[index='2']/state/output-power/instant -40.0
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/physical-channels/channel[index='2']/state/input-power/instant -40.0
# LANE 3
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/physical-channels/channel[index='3']/state/output-power/instant -40.0
/components/component[name='transceiver0_1_1_1']/oc-transceiver:transceiver/physical-channels/channel[index='3']/state/input-power/instant -40.0
```
##### QSFPDD
O exemplo mostrado refere-se ao transceiver cliente 7.2, porém os paths e valores são válidos para todos os transceivers QSFPDD usados em portas cliente que o suportam.
###### Inventário
```bash
/components/component[name='transceiver0_1_7_2']/state/name transceiver0_1_7_2
/components/component[name='transceiver0_1_7_2']/state/type TRANSCEIVER
/components/component[name='transceiver0_1_7_2']/state/empty false
/components/component[name='transceiver0_1_7_2']/state/oc-alarms:equipment-failure false
/components/component[name='transceiver0_1_7_2']/state/oc-alarms:equipment-mismatch false
/components/component[name='transceiver0_1_7_2']/oc-linecard:linecard/state/power-admin-state POWER_ENABLED
/components/component[name='transceiver0_1_7_2']/oc-linecard:linecard/state/openconfig-platform-augments:slot-admin-state SLOT_ENABLED
```
###### Temperatura
```bash
/components/component[name='transceiver0_1_7_2']/state/temperature/instant 27.4
```
###### Transceiver Info
```bash
components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/present PRESENT
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/form-factor QSFPDD
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/vendor "Gigalight "
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/vendor-part GQD-MPO201-DSR4C
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/vendor-rev "A "
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/serial-no "M1907187813 "
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/date-code "190910 "
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/pad-transceiver:qsfpdd-info/nominal-wavelength 0.0
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/pad-transceiver:qsfpdd-info/temp-high-alarm 85
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/pad-transceiver:qsfpdd-info/temp-low-alarm -15
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/pad-transceiver:qsfpdd-info/temp-high-warning 80
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/pad-transceiver:qsfpdd-info/temp-low-warning -10
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/pad-transceiver:qsfpdd-info/rx-power-high-alarm 0
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/pad-transceiver:qsfpdd-info/rx-power-low-alarm 0
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/pad-transceiver:qsfpdd-info/rx-power-high-warning 0
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/pad-transceiver:qsfpdd-info/rx-power-low-warning 0
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/pad-transceiver:qsfpdd-info/tx-bias-high-alarm 0
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/pad-transceiver:qsfpdd-info/tx-bias-low-alarm 0
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/pad-transceiver:qsfpdd-info/tx-bias-high-warning 0
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/pad-transceiver:qsfpdd-info/tx-bias-low-warning 0
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/pad-transceiver:qsfpdd-info/tx-power-high-alarm 0
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/pad-transceiver:qsfpdd-info/tx-power-low-alarm 0
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/pad-transceiver:qsfpdd-info/tx-power-high-warning 0
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/pad-transceiver:qsfpdd-info/tx-power-low-warning 0
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/pad-transceiver:qsfpdd-info/extended-compliance 0
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/pad-transceiver:qsfpdd-info/identifier 24
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/pad-transceiver:qsfpdd-info/specification-compliance 0
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/pad-transceiver:qsfpdd-info/cmis-module-media-type-encodings 1
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/state/pad-transceiver:qsfpdd-info/cmis-module-media-interface-id 648518346341351424
```
###### Physical Channels - Lanes
O QSFPDD é representado por 4 lanes.
State global é acessado pela lane `index = 0`.
State por lane, acessado na respectiva lane.
```bash
## LANE 0 - GLOBAL
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/physical-channels/channel[index='0']/state/tx-laser false
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/physical-channels/channel[index='0']/state/openconfig-platform-augments:alo OFF
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/physical-channels/channel[index='0']/state/openconfig-platform-augments:rx-power-threshold/min-power -30.0
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/physical-channels/channel[index='0']/state/openconfig-platform-augments:rx-power-threshold/max-power 5.0
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/physical-channels/channel[index='0']/state/openconfig-platform-augments:rx-power-threshold/alarm-enable false
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/physical-channels/channel[index='0']/state/openconfig-platform-augments:tx-power-threshold/min-power 0.0
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/physical-channels/channel[index='0']/state/openconfig-platform-augments:tx-power-threshold/max-power 5.0
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/physical-channels/channel[index='0']/state/openconfig-platform-augments:tx-power-threshold/alarm-enable false
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/physical-channels/channel[index='0']/state/pad-transceiver:tx-laser-off-reason [ ADMINISTRATIVE ]
## LANE 0
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/physical-channels/channel[index='0']/state/output-power/instant -40.0
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/physical-channels/channel[index='0']/state/input-power/instant -40.0
# LANE 1
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/physical-channels/channel[index='1']/state/output-power/instant -40.0
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/physical-channels/channel[index='1']/state/input-power/instant -40.0
# LANE 2
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/physical-channels/channel[index='2']/state/output-power/instant -40.0
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/physical-channels/channel[index='2']/state/input-power/instant -40.0
# LANE 3
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/physical-channels/channel[index='3']/state/output-power/instant -40.0
/components/component[name='transceiver0_1_7_2']/oc-transceiver:transceiver/physical-channels/channel[index='3']/state/input-power/instant -40.0
```
#### Optical channels
###### Inventário
Exemplo: Porta Rede 1 do TM1200G
```bash
state name opticalchannel0_1_9
state type OPTICAL_CHANNEL
state empty false
state equipment-failure false
state equipment-mismatch false
```
#### Logical channels
##### Inventário Lógico `openconfig-terminal-device`
O TM1200G tem sua estrutura de transporte representada logicamente pelos seguintes elementos:

A tabela abaixo faz uma relação entre as portas e os logical channels:

##### Dados de State `openconfig-terminal-device`
Como existe um número elevado de logical channels, o exemplo abaixo mostrará somente um logical channel de cada camada da tabela mostrada acima.
###### 100GE - Channel 1031303
```bash
/terminal-device/logical-channels/channel[index='1031303']/state/index 1031303
/terminal-device/logical-channels/channel[index='1031303']/state/description "100GE C3"
/terminal-device/logical-channels/channel[index='1031303']/state/trib-protocol PROT_100GE
/terminal-device/logical-channels/channel[index='1031303']/state/logical-channel-type PROT_ETHERNET
/terminal-device/logical-channels/channel[index='1031303']/state/loopback-mode NONE
/terminal-device/logical-channels/channel[index='1031303']/ingress/state/transceiver transceiver0_1_3_1
/terminal-device/logical-channels/channel[index='1031303']/logical-channel-assignments/assignment[index='1']/state/index 1
/terminal-device/logical-channels/channel[index='1031303']/logical-channel-assignments/assignment[index='1']/state/description "100GE -> ODU4"
/terminal-device/logical-channels/channel[index='1031303']/logical-channel-assignments/assignment[index='1']/state/assignment-type LOGICAL_CHANNEL
/terminal-device/logical-channels/channel[index='1031303']/logical-channel-assignments/assignment[index='1']/state/logical-channel 1101302
/terminal-device/logical-channels/channel[index='1031303']/logical-channel-assignments/assignment[index='1']/state/allocation 100.0
```
###### ODU4 - Channel 1101302
```bash
/terminal-device/logical-channels/channel[index='1101302']/state/index 1101302
/terminal-device/logical-channels/channel[index='1101302']/state/description "ODU4 L2-C3"
/terminal-device/logical-channels/channel[index='1101302']/state/logical-channel-type PROT_OTN
/terminal-device/logical-channels/channel[index='1101302']/logical-channel-assignments/assignment[index='1']/state/index 1
/terminal-device/logical-channels/channel[index='1101302']/logical-channel-assignments/assignment[index='1']/state/description "ODU4 -> OTU4"
/terminal-device/logical-channels/channel[index='1101302']/logical-channel-assignments/assignment[index='1']/state/assignment-type LOGICAL_CHANNEL
/terminal-device/logical-channels/channel[index='1101302']/logical-channel-assignments/assignment[index='1']/state/logical-channel 1101301
/terminal-device/logical-channels/channel[index='1101302']/logical-channel-assignments/assignment[index='1']/state/allocation 100.0
```
###### OTU4 - Channel 1101301
```bash
/terminal-device/logical-channels/channel[index='1101301']/state/index 1101301
/terminal-device/logical-channels/channel[index='1101301']/state/description "OTU4 L2-C3"
/terminal-device/logical-channels/channel[index='1101301']/state/logical-channel-type PROT_OTN
/terminal-device/logical-channels/channel[index='1101301']/otn/state/tti-msg-transmit "0PADTEC-SAPI-SM.0PADTEC-DAPI-SM.PADTEC Operator Specific SM = 32"
/terminal-device/logical-channels/channel[index='1101301']/otn/state/tti-msg-expected 0PADTEC-SAPI-SM.0PADTEC-DAPI-SM.
/terminal-device/logical-channels/channel[index='1101301']/otn/state/oc-opt-term-augments:timdetmo OFF
/terminal-device/logical-channels/channel[index='1101301']/otn/state/oc-opt-term-augments:timactenable false
/terminal-device/logical-channels/channel[index='1101301']/otn/state/oc-opt-term-augments:pn-ebc 0
/terminal-device/logical-channels/channel[index='1101301']/otn/state/oc-opt-term-augments:pn-ds 7478
/terminal-device/logical-channels/channel[index='1101301']/otn/state/oc-opt-term-augments:pf-ebc 0
/terminal-device/logical-channels/channel[index='1101301']/otn/state/oc-opt-term-augments:pf-ds 0
/terminal-device/logical-channels/channel[index='1101301']/logical-channel-assignments/assignment[index='1']/state/index 1
/terminal-device/logical-channels/channel[index='1101301']/logical-channel-assignments/assignment[index='1']/state/description "OTU4 -> ODUj"
/terminal-device/logical-channels/channel[index='1101301']/logical-channel-assignments/assignment[index='1']/state/assignment-type LOGICAL_CHANNEL
/terminal-device/logical-channels/channel[index='1101301']/logical-channel-assignments/assignment[index='1']/state/logical-channel 1101001
/terminal-device/logical-channels/channel[index='1101301']/logical-channel-assignments/assignment[index='1']/state/allocation 100.0
```
###### ODUj - Channel 1101001
```bash
/terminal-device/logical-channels/channel[index='1101001']/state/index 1101001
/terminal-device/logical-channels/channel[index='1101001']/state/description "ODUj L2"
/terminal-device/logical-channels/channel[index='1101001']/state/logical-channel-type PROT_OTN
/terminal-device/logical-channels/channel[index='1101001']/logical-channel-assignments/assignment[index='1']/state/index 1
/terminal-device/logical-channels/channel[index='1101001']/logical-channel-assignments/assignment[index='1']/state/description "ODUj -> OTUj"
/terminal-device/logical-channels/channel[index='1101001']/logical-channel-assignments/assignment[index='1']/state/assignment-type LOGICAL_CHANNEL
/terminal-device/logical-channels/channel[index='1101001']/logical-channel-assignments/assignment[index='1']/state/logical-channel 1101000
/terminal-device/logical-channels/channel[index='1101001']/logical-channel-assignments/assignment[index='1']/state/allocation 600.0
```
###### OTUj - Channel 1101000
```bash
/terminal-device/logical-channels/channel[index='1101000']/state/index 1101000
/terminal-device/logical-channels/channel[index='1101000']/state/description "OTUj L2"
/terminal-device/logical-channels/channel[index='1101000']/state/logical-channel-type PROT_OTN
/terminal-device/logical-channels/channel[index='1101000']/state/loopback-mode NONE
/terminal-device/logical-channels/channel[index='1101000']/otn/state/fec-uncorrectable-blocks 0
/terminal-device/logical-channels/channel[index='1101000']/otn/state/fec-corrected-bits 0
/terminal-device/logical-channels/channel[index='1101000']/otn/state/pre-fec-ber/avg 340282346638528873215639292979608587801.990395866994704384
/terminal-device/logical-channels/channel[index='1101000']/otn/state/pre-fec-ber/min 340282346638528873215639292979608587801.990395866994704384
/terminal-device/logical-channels/channel[index='1101000']/otn/state/pre-fec-ber/max 340282346638528873215639292979608587801.990395866994704384
/terminal-device/logical-channels/channel[index='1101000']/ingress/state/transceiver transceiver0_1_10
/terminal-device/logical-channels/channel[index='1101000']/logical-channel-assignments/assignment[index='1']/state/index 1
/terminal-device/logical-channels/channel[index='1101000']/logical-channel-assignments/assignment[index='1']/state/description "OTUj -> opticalchannel"
/terminal-device/logical-channels/channel[index='1101000']/logical-channel-assignments/assignment[index='1']/state/assignment-type OPTICAL_CHANNEL
/terminal-device/logical-channels/channel[index='1101000']/logical-channel-assignments/assignment[index='1']/state/optical-channel opticalchannel0_1_10
/terminal-device/logical-channels/channel[index='1101000']/logical-channel-assignments/assignment[index='1']/state/allocation 600.0
```
#### System
As informações de inventário em system são:
- A hora do sistema
- O site-id, group-id e site-name que são configurados com os respectivos valores *harcoded*: 1, 0 e "TM1200G"
###### Inventário
```bash
system state current-datetime 2021-01-26T21:43:35.342Z+00:00
system site state site-id 1
system site state group-id 0
system site state site-name TM1200G
```
#### Interfaces DCN e GL
As interfaces ETH das portas GL e DCN são descritas em inventário JSON e são gerenciáveis.
A interface GL está disponível somente para leitura.
Para a interface DCN, o usuário pode configurar IP e MÁSCARA de rede, e também habilitar/desabilitar.
Valores pré-definidos:
- VlanId DCN: 100
- Vlan GL: 301
###### Interface DCN
Exemplo de uma placa configurada com o IP 172.30.0.128. O IP varia conforme a rede usada:
```bash
/interfaces/interface[name='dcn0_1_1']/subinterfaces/subinterface[index='0']/state/index 0
/interfaces/interface[name='dcn0_1_1']/subinterfaces/subinterface[index='0']/state enabled
/interfaces/interface[name='dcn0_1_1']/subinterfaces/subinterface[index='0']/oc-ip:ipv4/addresses/address[ip='172.30.0.128']/state/ip 172.30.0.128
/interfaces/interface[name='dcn0_1_1']/subinterfaces/subinterface[index='0']/oc-ip:ipv4/addresses/address[ip='172.30.0.128']/state/prefix-length 16
/interfaces/interface[name='dcn0_1_1']/subinterfaces/subinterface[index='0']/oc-ip:ipv4/state enabled
/interfaces/interface[name='dcn0_1_1']/subinterfaces/subinterface[index='0']/oc-vlan:vlan/state/vlan-id 100
```
###### Interface GL
```bash
/interfaces/interface[name='gl0_1_1']/subinterfaces/subinterface[index='0']/state/index 0
/interfaces/interface[name='gl0_1_1']/subinterfaces/subinterface[index='0']/state enabled
/interfaces/interface[name='gl0_1_1']/subinterfaces/subinterface[index='0']/oc-ip:ipv4/addresses/address[ip='169.254.32.5']/state/ip 169.254.32.5
/interfaces/interface[name='gl0_1_1']/subinterfaces/subinterface[index='0']/oc-ip:ipv4/addresses/address[ip='169.254.32.5']/state/prefix-length 30
/interfaces/interface[name='gl0_1_1']/subinterfaces/subinterface[index='0']/oc-ip:ipv4/state enabled
/interfaces/interface[name='gl0_1_1']/subinterfaces/subinterface[index='0']/oc-vlan:vlan/state/vlan-id 301
```
#### Local-routes
O local-route representa o default gateway da placa e varia conforme a rede usada.
Exemplo de default-gw para uma placa configurada com IP 172.30.0.128:
```bash
/local-routes/static-routes/static[prefix='172.30.0.254/16']/state/prefix 172.30.0.254/16
```
## Actions
Actions são comandos *rpc* que executam uma ação.
#### Reboot da placa
Atualmente somente o reboot está disponível no set de comandos do TM1200G, não existindo uma opção de reset das configurações padrão, desta forma, as actions para realizar o reboot são as seguintes:
```bash
request reboot-request component linecard0_1 method SYSTEM
```
```bash
request reboot-request component linecard0_1 method FACTORY
```
#### Reset de Contadores OTN
Para o TM1200G, o reset de contadores é implementado somente para os logical channels relacionados às portas rede, ou seja, **1090900** e **1101000**.
O reset de contadores OTN é realizado pela seguinte action:
```bash
request terminal-device logical-channels channel 1090900 otn action reset-performance-data type ALL
```
As opções ALL, FEC e OTN estão disponíveis como parâmetro, mas todos eles realizam o mesmo reset no TM1200G, pois não há distinção de tipo de reset OTN implementado no set de comandos da placa.
#### Reset dos PORTS
Esta action está disponível somente para as portas do lado rede, ou seja, **port0_1_9** e **port0_1_10**. Ela executa um reboot na porta rede escolhida.
```bash
request components component port0_1_9 port action port-reset
```
## Notifications
A subscrição em canais de notificação netconf segue o mesmo padrão do apresentado na seção 'Netconf Notifications' documento USER_GUIDE_W1.md.
#### Métricas
As métricas são conjuntos de valores da placa que são atualizadas a cada 15 minutos. O formato das notificações é:
```xml
<notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
<eventTime>2021-01-30T14:31:32+00:00</eventTime>
<espvl-metrics xmlns="http://padtec.com.br/yang/padtec-netconf-notifications">
<chassis-id>0</chassis-id>
<slot-id>1</slot-id>
<metrics>
<metric>
<timestamp>1612016637320</timestamp>
<path>/get/qsfp/client_2/qsfp_operational_temperature</path>
<value>'NaN'</value>
<opcode>9298</opcode>
</metric>
</metrics>
</espvl-metrics>
</notification>
```
O campo `path` da notificação não aponta diretamente para o caminho no modelo yang, e ainda faz referência ao ppm3. É possível converter o path da notificação de ppm3 para o caminho de dados do modelo yang usando a tabela abaixo:
| Metric path | OpenConfig |
| ----------- | ---------- |
| `/get/qsfp/<interface>/qsfp_operational_temperature` | /components/component{TRANSCEIVER}/state/temperature |
| `/get/port/<interface>/port_operational_output_power` | /components/component{OPTICALCHANNEL}/optical-channel/state/output-power/instant |
| `/get/port/<interface>/port_operational_rx_channel_power` | /components/component{OPTICALCHANNEL}/optical-channel/state/input-power/instant |
| `/get/port/<interface>/port_current_osnr` | /components/component{OPTICALCHANNEL}/optical-channel/state/osnr/avg |
| `/get/port/<interface>/port_current_q` | /components/component{OPTICALCHANNEL}/optical-channel/state/q-value/avg |
| `/get/port/<interface>/port_current_chromatic_dispersion` | /components/component{OPTICALCHANNEL}/optical-channel/state/chromatic-dispersion/avg/ |
| `/get/port/<interface>/port_current_carrier_frequency_offset` | /components/component{OPTICALCHANNEL}/optical-channel/state/carrier-frequency-offset/avg/ |
| `/get/port/<interface>/port_current_pdl` | /components/component{OPTICALCHANNEL}/optical-channel/state/polarization-dependent-loss/avg |
| `/get/port/<interface>/port_current_dgd` | /components/component{OPTICALCHANNEL}/optical-channel/state/differential-group-delay/avg |
| `/get/port/<interface>/port_current_sopmd` | /components/component{OPTICALCHANNEL}/optical-channel/state/second-order-polarization-mode-dispersion/avg |
| `/get/port/<interface>/port_current_sop` | /components/component{OPTICALCHANNEL}/optical-channel/state/sop-change-rate/avg |
| `/get/port/<interface>/port_operational_rx_channel_power` | /components/component{OPTICALCHANNEL}/optical-channel/state/input-power/instant |
| `/get/port/<interface>/port_operational_output_power` | /components/component{OPTICALCHANNEL}/optical-channel/state/output-power/instant |
| `/get/otn/<interface>/otujk_ho_feccorr` | /terminal-device/logical-channels/channel{LOGICALCHANNEL}/otn/state/fec-corrected-bits |
| `/get/otn/<interface>/otujk_ho_fecuncorr` | /terminal-device/logical-channels/channel{LOGICALCHANNEL}/otn/state/fec-uncorrectable-blocks |
| `/get/otn/<interface>/otujk_ho_ber/ber_ave` | /terminal-device/logical-channels/channel{LOGICALCHANNEL}/otn/state/pre-fec-ber/avg |
| `/get/otn/<interface>/otuk_tt_sk_mi_pn_ebc` | /terminal-device/logical-channels/channel{LOGICALCHANNEL}/otn/state/pn-ebc |
| `/get/otn/<interface>/otuk_tt_sk_mi_pf_ebc` | /terminal-device/logical-channels/channel{LOGICALCHANNEL}/otn/state/pf-ebc |
| `/get/otn/<interface>/otuk_tt_sk_mi_pn_ds` | /terminal-device/logical-channels/channel{LOGICALCHANNEL}/otn/state/pn-ds |
| `/get/otn/<interface>/otuk_tt_sk_mi_pf_ds` | /terminal-device/logical-channels/channel{LOGICALCHANNEL}/otn/state/pf-ds |
| `/get/core/sys/ac1200_temperature/asic_line` | devices device linecard* terminal-device logical-channels channel * otn state q-value instant |
#### PPM3
Formato das notificações de [trap](https://) ppm3:
```xml
<notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
<eventTime>2021-01-30T13:57:00+00:00</eventTime>
<espvl-ppm3-alarm xmlns="http://padtec.com.br/yang/padtec-netconf-notifications">
<chassis-id>0</chassis-id>
<slot-id>1</slot-id>
<alarm-key>trap_otuk_tt_sk_mi_cssf@net_1_1@alarm_cleared</alarm-key>
<alarm-opcode>22211</alarm-opcode>
<alarm-name>trap_otuk_tt_sk_mi_cssf</alarm-name>
<alarm-interface>net_1_1</alarm-interface>
<alarm-timestamp>1612015020877</alarm-timestamp>
<alarm-type>alarm_cleared</alarm-type>
</espvl-ppm3-alarm>
</notification>
```
Formato das notificações de flags ppm3:
```xml
<notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
<eventTime>2021-01-30T13:57:02+00:00</eventTime>
<espvl-ppm3-alarm xmlns="http://padtec.com.br/yang/padtec-netconf-notifications">
<chassis-id>0</chassis-id>
<slot-id>1</slot-id>
<alarm-key>flag_port_administrative_operation_mode@net_1@alarm_flag</alarm-key>
<alarm-opcode>13891</alarm-opcode>
<alarm-name>flag_port_administrative_operation_mode</alarm-name>
<alarm-interface>net_1</alarm-interface>
<alarm-timestamp>1612015022279</alarm-timestamp>
<alarm-type>alarm_flag</alarm-type>
<flag-value>[ /get/port/net_1/port_administrative_operation_mode/chromatic_dispertion_control[=0] /get/port/net_1/port_administrative_operation_mode/high_search[=3000] /get/port/net_1/port_administrative_operation_mode/low_search[=-3000] /get/port/net_1/port_administrative_operation_mode/phase_encoding[=0] /get/port/net_1/port_administrative_operation_mode/port_operation_mode[=3] ]
</flag-value>
</espvl-ppm3-alarm>
</notification>
```
#### Transações (beta)
Para habilitar ou desabilitar essa funcionalidade, primeiramente é necessário parar a execução das aplicações. Isso pode ser feito dentro da placa através do script `tm1200g-ctl` da seguinte forma:
```bash
tm1200g-ctl stop
```
Antes de subir aplicação novamente, é necessário executar os seguintes comandos para habilitar ou desabilitar:
- Para habilitar:```export ESPVL_INTENDED_TRANSACTION_NOTIF= ```
- Para desabilitar: ```unset -v ESPVL_INTENDED_TRANSACTION_NOTIF```
Após fazer o export ou unset da flag, suba novamente as aplicações usando o script `tm1200g-ctl`.
```bash
tm1200g-ctl start
```
**Nota**: Essa é uma feature beta e deve ser usada somente em testes ou debugs. Depois de utilizá-la, é recomendável sempre desativá-la.
O formato das notificações é:
```xml
<notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
<eventTime>2020-09-21T11:41:46+00:00</eventTime>
<espvl-intended-result xmlns="http://padtec.com.br/yang/padtec-netconf-notifications">
<chassis-id>0</chassis-id>
<slot-id>2</slot-id>
<txid>1</txid>
<status>COMPLETED</status>
<size>1</size>
<changes>
<change>
<id>15</id>
<path>/devices/device{linecard0_2}/terminal-device/logical-channels/channel{201}/config/trib-protocol</path>
<value>pad-opt-types:PROT_NONE</value>
<status>APPLIED</status>
<index>1</index>
</change>
</changes>
</espvl-intended-result>
</notification>
```
## Recomendações e Troubleshooting
### Atualização manual da aplicação `superviser`
Em alguns casos, pode ser desejável que somente a app `superviser` seja atualizada com alguma versão específica. Isso pode poupar tempo, por exemplo, em casos onde foram feitas alterações somente na aplicação ou em modelos Yang quando a imagem base não foi alterada. Através do link http://esbuild01/artifactory/build/sandbox.erlang.superviser/ é possível acessar uma página onde todas as builds disponíveis estão listadas. Para fazer o download do artefato, clique no número da build desejada, e em seguida clique novamente no arquivo com o formato de nome superviser-\*.tar.gz, como exemplificado na imagem abaixo:

Depois de obter o arquivo tar.gz da aplicação `superviser`, execute os passos abaixo:
**Nota**: O nome <superviser.tar.gz> é um exemplo, é necessário substituí-lo pelo nome exato do arquivo que foi baixado no passo anterior.
1. Copiar aplicação para o TM1200G:
```bash
scp <superviser.tar.gz> root@<IP_TM1200G>:/home/root
```
2. Acessar o TM1200G:
```bash
ssh root@<IP_TM1200G>
```
3. A partir do TM1200G, parar as aplicações:
```bash
tm1200g-ctl stop
```
4. Executar:
```bash
cd /opt/padtec/pkgs/sandbox.erlang.superviser && rm -rf ./*
tar -xzvf /home/root/<superviser.tar.gz>
```
5. Iniciar novamente as aplicações:
```bash
tm1200g-ctl start
```
### Logs da aplicação superviser
Os logs da aplicação `superviser` foram modificados na Wave 3. Eles continuam sendo salvos no diretório `/opt/padtec/pkgs/sandbox.erlang.superviser/log`, porém os arquivos de registro dos logs foram nomeados como `superviser.debug.log` e `superviser.errors.log`.
O logger_level inicial da aplicação foi alterada para `error`, ou seja, inicialmente ela só irá escrever nos arquivos mensagens com level igual ou menor que error. Os levels estão presentes na tabela abaixo:
**Nota**: Quanto menor o Integer do level, maior a sua prioridade, ou seja, os logs de emergency são os mais prioritários e importantes, e de debug os menos prioritários.
| Level | Integer | Description |
| -------- | -------- | -------- |
| emergency | 0 | system is unusable |
| alert | 1 | action must be taken immediately |
| critical | 2 | critical conditions |
| error | 3 | error conditions |
| warning | 4 | warning conditions |
| notice | 5 | normal but significant conditions |
| info | 6 | informational messages |
| debug | 7 | debug-level messages |
Caso algum teste ou debug demande a captura de logs mais completos, é possível alterar o level dos logs para debug. Para alterar o level, o usuário deve estar logado na placa e a aplicação `superviser` deve estar sendo executada para que se execute um attach a ela. Ao executar o `superviser-ctl attach`, o usuário estará logado na cli da aplicação `superviser`, conforme mostrado no exemplo abaixo:
```bash
# superviser-ctl attach
Attaching to /tmp/erl_pipes/superviser@127.0.0.1/erlang.pipe.1 (^D to exit)
(superviser@127.0.0.1)2>
```
Após executar o attach e logar na cli da aplicação `superviser`, para mudar o level dos logs para debug execute o comando mostrado abaixo:
**Obs**.: O ponto ao fim da linha é necessário.
```bash
(superviser@127.0.0.1)1> padlog:app_debug(all).
[ok,ok,ok,ok,ok,ok]
```
É possível usar os seguintes comandos na cli da app superviser para alterar o level:
`app_debug(all).` : Altera a prioridade para debug.
`app_emergency(all).` : Altera a prioridade para emergency.
`app_error(all).` : Altera a prioridade para error.
`app_info(all).`: Altera a prioridade para info.
`app_warning(all).` : Altera a prioridade para warning.
Como citado anteriormente, existem os arquivos `superviser.debug.log` e `superviser.errors.log`, a distinção entre eles é a seguinte:
- `superviser.debug.log`: Registra todas as mensagens de log que estejam dentro da criticidade do level configurado no momento da captura, por exemplo, se o level for configurado para `debug`, todas as outras mensagens serão registradas nele, pois `debug` é o level mais abrangente.
- `superviser.debug.log`: Indepente do level configurado no momento da captura, só mensagens de `error` ou mais críticas serão registradas nele.
### Dados de Config Inconsistentes
Alguns casos de uso podem colocar o sistema num estado inconsistente de configuração, que não reflete a configuração da linecard.
Alguns elementos de configuração não são validados até serem processados pela linecard. Nesses casos, a linecard pode não aplicar o `Commit` do usuário (porque o valor é inválido ou por algum erro interno) tornando a config inconsistente. Essa discrepância pode ser identificada quando o `state` difere da `config`.
`Commit`: é a `Intenção de Modificação` validada e persistida no CDB do ConfD. A operação de commit para o `low-level` (formato e protocolo das linecards) é assíncrona.
#### Recomendação para config de valores não validados por modelo
É recomendado que o manual da placa seja consultado para saber quais são os valores válidos, a fim de evitar inconsistências entre a `config` (config desejada) e o `state` (estado operacional).
A maioria dos elementos de config não são validados por modelo e só serão validados na linecard. Se um valor inválido é configurado, mas rejeitado pela placa, o usuário pode a qualquer momento reconfigurar com um valor válido.
**Exemplo.** Usuário configura um modo de operação inválido. O modo de operação não é validado na aplicação, somente na linecard.
A config inicial é:
```bash
> show components component opticalchannel0_1_9 optical-channel state operational-mode
optical-channel state operational-mode 3
```
O comando abaixo tentará plicar o valor 20:
```bash
% set components component opticalchannel0_1_9 optical-channel config operational-mode 20
% commit
Commit complete. <<---- a intenção foi aceita, pois o valor só será validado na linecard
A config agora:
```bash
> show configuration components component opticalchannel0_1_9 optical-channel config operational-mode
operational-mode 20;
```
Mas o state diverge, pois o equipamento rejeitou o valor 20:
```bash
> show components component opticalchannel0_1_9 optical-channel state operational-mode
optical-channel state operational-mode 3
```
Como a aplicação não interfere na config do usuário, o valor da config permanece 20. Para restaurar, o usuário deverá editar o valor em novo commit. Consulte a seção sobre **Dados de Config Inconsistentes.**
### Restaurar a configuração default dos equipamentos
**Atenção:** este procedimento desprovisiona os serviços de transporte, cessando o tráfego.
A aplicação superviser não instrumenta o reset de configuração para default, pois o set de comandos do TM1200G não implementa tal funcionalidade, sendo assim, a restauração deve ser feita manualmente seguindo os passos listados abaixo:
1. Faça login na placa e apague o arquivo de configuração da placa:
```bash
rm /data/dao.json
```
2. Execute o reboot da placa:
```bash
reboot
```
Após o processo de boot, a placa estará novamente com as configurações default.
## Documentação Complementar e Referências
[Documentação do Projeto no Confluence](http://confluence.padtec.com.br:8090/pages/viewpage.action?pageId=165517538)
[ONF - Informational Reference Design for Open Disaggregated Transport Network](https://www.opennetworking.org/wp-content/uploads/2019/04/ONF-Info-1002-ODTN-032919.pdf)
[Treinamento SDN](\\terra\tecnologia\TREINAMENTOS\SDN)
## Anexo I - Configuração Default do TM1200G