Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Definieren von Ansichten für Junos PyEZ-Betriebstabellen, die strukturierte Ausgaben analysieren

Junos PyEZ-Betriebstabellen für strukturierte Ausgabe wählen spezifische Daten aus der XML-Ausgabe eines RPC, der auf einem Junos-Gerät ausgeführt wird. Eine Tabelle wird einer Ansicht zugeordnet, die verwendet wird, um auf Felder in den Tabellenelementen zuzugreifen und sie benutzerdefinierten Python-Variablen zuzuordnen. Sie weisen eine Tabelle einer bestimmten Ansicht zu, indem Sie die view Eigenschaft in die Tabellendefinition einbinden, die den View-Namen als Argument annimmt.

A View ordnet Ihre benutzerdefinierten Variablen XML-Elementen in den ausgewählten Tabellenelementen zu. Mit einer Ansicht können Sie auf bestimmte Felder in der Ausgabe als Variablen mit Eigenschaften zugreifen, die in Python geändert werden können. Junos PyEZ kümmert sich um die Extraktion der Daten in Python sowie um die Konvertierung oder Normalisierung aller Art. Die in der Ansicht definierten Schlüssel müssen gültige Python-Variablennamen sein.

Junos PyEZ-Ansichten wie Tabellen werden mithilfe von YAML formatiert. Ansichten, die strukturierte Ausgaben analysieren, können eine Reihe von Parametern enthalten, die in Tabelle 1 zusammengefasst sind.

Tabelle 1: Parameter in Ansichten für Junos PyEZ Op-Tabellen für strukturierte Ausgabe

Parametername anzeigen

Parameter anzeigen

Beschreibung

Name anzeigen

Benutzerdefinierte Bezeichner für die Ansicht.

Feldelemente

fields

Assoziatives Array oder Wörterbuch von Schlüssel-Wert-Paaren, die benutzerdefinierte Feldnamen XPath-Ausdrücken zuordnen, die Elemente in den Tabellenelementen auswählen. Die Feldnamen müssen gültige Python-Variablennamen sein.

Feldgruppen

fields_group

Assoziatives Array oder Wörterbuch von Schlüssel-Wert-Paaren, die benutzerdefinierte Feldnamen XPath-Ausdrücken zuordnen, die Elemente in den Tabellenelementen auswählen. Die XPath-Ausdrücke sind relativ zum Kontext, der durch den entsprechenden groups-Parameter festgelegt wird. Die Feldnamen müssen gültige Python-Variablennamen sein.

Gruppen

groups

Assoziatives Array oder Wörterbuch von Schlüssel-Wert-Paaren, die einen benutzerdefinierten Gruppennamen einem XPath-Ausdruck zuordnen (relativ zum Tabellenelementkontext), der den XPath-Kontext für Felder in dieser Gruppe festlegt.

Betrachten Sie die folgende Junos PyEZ Op-Tabelle und -Ansicht, die in der Junos PyEZ-Verteilung enthalten sind. Die Tabelle extrahiert Betriebszustandsinformationen für Ethernet-Schnittstellen auf dem Zielgerät.

In den folgenden Abschnitten werden die verschiedenen Komponenten der Ansicht diskutiert:

Name anzeigen

Der Ansichtsname ist eine benutzerdefinierte Kennung für die Ansicht. Sie weisen eine Tabelle einer bestimmten Ansicht zu, indem Sie die view Eigenschaft in die Tabellendefinition integrieren und als Argument den View-Namen angeben. Zum Beispiel:

Felder (Felder)

Sie passen Ansichten an, sodass sie nur auf die erforderlichen Elemente aus den ausgewählten Tabellenelementen verweisen. Dazu fügen Sie die fields Eigenschaft und ein assoziatives Array mit der Zuordnung benutzerdefinierter Feldnamen zu XPath-Ausdrücken hinzu, die die gewünschten Elemente aus dem Tabellenelement auswählen. Die Feldnamen müssen gültige Python-Variablennamen sein. Die XPath-Ausdrücke sind relativ zum Kontext der Tabellenelemente.

Betrachten Sie die folgende RPC-Beispielausgabe:

Wenn der Parameter Table item Elemente aus der Ausgabe auswählt <physical-interface> , ist der XPath-Ausdruck für jedes Feld in der View-Definition relativ zu diesem Kontext. Die folgende Ansichtsdefinition ordnet jeden benutzerdefinierten Feldnamen einem untergeordneten Element des <physical-interface> Elements zu:

Im Python-Skript können Sie dann auf ein View-Element als Variableneigenschaft zugreifen. Standardmäßig verfügt jedes View-Element über eine name Eigenschaft, die auf den Schlüssel verweist, der dieses Element eindeutig identifiziert.

Das Feldformat bestimmt den Typ für den Wert eines Feldes. Standardmäßig werden Feldwerte als Zeichenfolgen gespeichert. Sie können einen anderen Typ für den Feldwert in der Feldzuordnung angeben. Im folgenden Beispiel wird der Wert des mtu Elements als integer definiert:

In der RPC-Ausgabe sind einige Junos XML-Elemente nur leere Elemente, die als Flags fungieren. Sie können explizit angeben, dass ein Feld in der Feldzuordnung ein Flag ist. Der Feldelementwert für ein Flag ist True, wenn das Element in der Ausgabe vorhanden ist, und False, wenn das Element fehlt. Im folgenden Beispiel wird das ifdf-running Element als Flag definiert:

Sie können den Feldelementwert auch mit der folgenden Syntax auf einen Boolen festlegen:

Der Wert des Elements wird mit dem regulären Ausdruck bewertet, der an regex(). Wenn der Wert des Elements mit dem Ausdruck übereinstimmt, wird der Wert des Feldelements auf den im Format definierten Booleschen Wert festgelegt. Im folgenden Beispiel wird das oper_status_down Feld auf True festgelegt, wenn der Wert des oper-status Elements "down" enthält:

Sie können auch komplexere reguläre Ausdrücke verwenden und mit mehreren Werten abgleichen. Das folgende Feldelement wird auf True festgelegt, wenn die Adresse im rt-destination Element mit '198.51.' beginnt:

Das folgende Feldelement wird auf True festgelegt, wenn das no-refresh Element einen Wert im regulären Ausdruck enthält.

Gruppen (Gruppen) und Feldgruppen (fields_)

Gruppen stellen eine Verknüpfungsmethode zum Auswählen und Referenzieren von Elementen innerhalb eines bestimmten Knotensatzes in einem Tabellenelement bereit.

In der folgenden RPC-Ausgabe enthält das <if-device-flags> Element mehrere untergeordnete Elemente, die den Werten entsprechen, die Device flags im Feld in der CLI-Ausgabe angezeigt werden:

In der Ansichtsdefinition können Sie die fields Eigenschaft verwenden, um auf die untergeordneten Elemente zuzugreifen, indem Sie für jedes Element relativ zum ausgewählten Tabellenelement den vollständigen XPath-Ausdruck bereitstellen. Wenn beispielsweise die EthPortTable-Definition Elemente auswählt <physical-interface> , würde die Feldelementzuordnung die folgenden XPath-Ausdrücke verwenden:

Alternativ können Sie eine Gruppe erstellen, die den Kontext auf das <if-device-flags> Element legt, und dann Feldgruppenelemente definieren, die nur den XPath-Ausdruck relativ zu diesem Kontext bereitstellen. Sie können eine beliebige Anzahl von Gruppen innerhalb einer Ansichtsdefinition definieren.

Um eine Gruppe zu erstellen, fügen Sie die groups Eigenschaft ein und ordnen Sie dem XPath-Ausdruck, der den neuen Kontext definiert, einen benutzerdefinierten Gruppennamen zu. Definieren Sie dann eine Feldgruppe, auf deren Name fields_ der Gruppenname folgt. Die Feldgruppe ist ein assoziatives Array, das die Zuordnung von benutzerdefinierten Feldnamen zu XPath-Ausdrücken enthält, die nun relativ zum Kontextsatz in groups. Die Feldnamen müssen gültige Python-Variablennamen sein.

Im folgenden Beispiel werden die Gruppe flags und die entsprechende Feldgruppe fields_flagsdefiniert. Die flags Gruppe legt den Kontext auf die physical-interface/if-device-flags Hierarchieebene fest, und die present Felder running und Felder greifen auf die Werte der Elemente bzwifdf-running. elemente ifdf-present zu.

Unabhängig davon, ob Sie Felder oder Feldgruppen verwenden, greifen Sie innerhalb des Junos PyEZ-Skripts auf dieselbe Weise auf den Wert zu, indem Sie die benutzerdefinierten Feldnamen verwenden.