Mesclagem de elementos em dados de configuração usando o protocolo Junos XML
Por padrão, o servidor de protocolo Junos XML mescla dados de configuração carregados na configuração do candidato de acordo com as seguintes regras. (As regras também se aplicam a uma cópia privada da configuração ou a uma instância aberta do banco de dados de configuração efêmero, mas para simplicidade a discussão a seguir refere-se apenas à configuração do candidato.)
Um elemento de configuração (nível de hierarquia ou objeto de configuração) que existe no candidato, mas não na configuração carregada permanece inalterado.
Um elemento de configuração que existe na configuração carregada, mas não no candidato, é adicionado ao candidato.
Se houver um elemento de configuração em ambas as configurações, a semântica será a seguinte:
Se uma declaração infantil do elemento de configuração (representado por um elemento de tag infantil) existir no candidato, mas não na configuração carregada, ela permanecerá inalterada.
Se houver uma declaração de criança na configuração carregada, mas não no candidato, ela será adicionada ao candidato.
Se uma declaração infantil existir em ambas as configurações, o valor na configuração carregada substitui o valor no candidato.
O modo de fusão é o modo padrão para novos elementos de configuração, de modo que o aplicativo simplesmente emite o <load-configuration>
elemento tag em um <rpc>
elemento de tag:
<rpc> <!-- For a file --> <load-configuration url="file" [format="format"]/> <!-- For a data stream --> <load-configuration [format="format"]> <!-- configuration data --> </load-configuration> </rpc>
Para obter mais informações sobre os url
atributos, format
consulte dados de configuração de upload e formatação em uma sessão de protocolo Junos XML.
Para especificar explicitamente o modo de fusão para dados de configuração que usam elementos Junos XML, texto ASCII formatado ou formato JSON, o aplicativo pode incluir o action="merge"
atributo na <load-configuration>
tag, conforme mostrado nos exemplos ao final desta seção.
Ao usar os elementos de tag Junos XML para representar o elemento para se mesclar na configuração, o aplicativo inclui os elementos básicos de tag descritos na criação, modificação ou exclusão de elementos de configuração usando o Protocolo Junos XML. Ele não inclui nenhum atributo na tag de contêiner do elemento. Se adicionar ou alterar o valor de um elemento infantil, o aplicativo inclui os elementos de tag para ele. Se uma criança permanecer inalterada, ela não precisará ser incluída na configuração carregada. No seguinte, o elemento de tag do identificador é chamado <name>
:
<configuration> <!-- opening tag for each parent of the element --> <container-tag> <name>identifier</name> <!-- if the element has an identifier --> <!-- tag elements for other children, if any --> </container-tag> <!-- closing tag for each parent of the element --> </configuration>
Ao usar o texto ASCII formatado, o aplicativo inclui o caminho de declaração descrito na criação, modificação ou exclusão de elementos de configuração usando o Protocolo Junos XML. Ele não inclui um operador anterior, mas inclui o identificador do elemento se ele tiver um. Se adicionar ou alterar o valor de um elemento infantil, o aplicativo inclui os elementos de tag para ele. Se uma criança permanecer inalterada, ela não precisará ser incluída na configuração carregada.
<configuration-text> /* statements for parent levels of the element */ element identifier { /* child statements if any */ } /* closing braces for parent levels of the element */ </configuration-text>
A partir do Junos OS Release 16.1, você pode carregar dados de configuração formatados usando a Notação de objetos JavaScript (JSON) no dispositivo. Ao usar o JSON para representar os elementos para se mesclar na configuração, o aplicativo inclui os dados básicos do JSON descritos na criação, modificação ou exclusão de elementos de configuração usando o Protocolo Junos XML. Ele não precisa incluir atributos de operação específicos nos dados de configuração do JSON para mesclar o elemento novo ou alterado. Se adicionar ou alterar o valor de um elemento infantil, o aplicativo inclui os dados JSON ou objetos infantis para ele. Se uma criança permanecer inalterada, ela não precisará ser incluída na configuração carregada. No exemplo a seguir, o membro JSON que especifica o identificador do elemento tem o nome de campo "nome":
<configuration-json> { "configuration" : { /* JSON objects for parent levels of the element */ "container-tag" : { "object" : [ { "name" : "identifier", "statement-name" : "statement-value", # if any /* additional data and child objects */ # if any } ], /* data and child objects */ # if any } /* closing braces for parent levels of the element */ } } </configuration-json>
Ao usar comandos de modo de configuração para mesclar novos elementos, o aplicativo inclui os action="set"
atributos e format="text"
os <load-configuration>
atributos na tag, como mostrado nos exemplos ao final desta seção. O aplicativo inclui o set
comando, o caminho de declaração para o elemento e o identificador do elemento se ele tiver um. Se adicionar ou alterar o valor de um elemento infantil, o aplicativo inclui os elementos ou declarações infantis no comando. Se uma criança permanecer inalterada, ela não precisa ser incluída.
<configuration-set> set statement-path-to-element element identifier child-statements </configuration-set>
O exemplo a seguir mostra como mesclar em uma nova interface chamada de 3/0/0 no [edit interfaces]
nível de hierarquia na configuração. As informações são fornecidas como elementos de tag Junos XML (o padrão).

O exemplo a seguir mostra como usar o texto ASCII formatado para definir a mesma nova interface.

O exemplo a seguir mostra como usar dados de configuração do JSON para definir a mesma interface.
<rpc> <load-configuration format="json"> <configuration-json> { "configuration" : { "interfaces" : { "interface" : [ { "name" : "so-3/0/0", "unit" : [ { "name" : 0, "family" : { "inet" : { "address" : [ { "name" : "10.0.0.1/8" } ] } } } ] } ] } } } </configuration-json> </load-configuration> </rpc> <rpc-reply xmlns:junos="http://xml.juniper.net/junos/16.2R2/junos"> <load-configuration-results> <load-success/> </load-configuration-results> </rpc-reply>
O exemplo a seguir mostra como usar comandos de modo de configuração para definir a mesma interface.
