Junos PyEZ 구성 테이블에 대한 뷰 정의
Junos PyEZ 구성 테이블은 Junos 디바이스의 선택된 구성 데이터베이스에서 특정 데이터를 추출하거나 프로그래밍 방식으로 Junos 디바이스를 구성하는 데 사용할 수 있는 구조화된 리소스를 정의할 수 있습니다. 테이블은 테이블 데이터의 요소를 선택하고 참조하는 데 사용되는 뷰와 연결됩니다. Table 이름을 인수로 사용하는 Table 정의에 속성을 포함하여 view
Table을 특정 View와 연결합니다.
뷰는 사용자 정의 필드 이름을 선택한 테이블 항목의 XML 요소에 매핑합니다. View를 사용하면 Python에서 조작할 수 있는 속성을 가진 변수로 데이터의 특정 필드에 액세스할 수 있습니다. Junos PyEZ는 Python으로 데이터 추출은 물론 모든 유형 변환 또는 데이터 정규화를 처리합니다.
또는 set
속성이 있는 get
테이블을 사용하여 구성 데이터를 검색할 때 View 필드는 응용 프로그램이 개체에 대해 검색해야 하는 구성 데이터를 지정합니다. 속성을 포함하고 set
디바이스에서 구성할 수 있는 리소스를 정의하는 테이블의 경우, 보기에 정의된 필드는 해당 리소스에 대해 구성할 수 있는 문을 제한합니다.
테이블과 같은 Junos PyEZ 뷰는 YAML을 사용하여 형식이 지정됩니다. 구성과 연관된 정의 보기 테이블에는 여러 매개변수가 포함될 수 있으며, 이는 표 1에 요약되어 있습니다.
매개변수 이름 보기 |
매개변수 보기 |
테이블 유형 |
설명 |
---|---|---|---|
보기 이름 |
– |
|
사용자 정의 뷰 식별자입니다. |
필드 항목 |
|
|
구성 데이터의 요소를 선택하는 XPath 표현식에 사용자 정의 필드 이름을 매핑하는 키-값 쌍의 연관 배열 또는 사전입니다. 필드 이름은 유효한 Python 변수 이름이어야 합니다. XPath 식은 해당 테이블의 또는 테이블 범위에서 를 사용하는 |
필드 그룹 |
|
|
구성 데이터의 요소를 선택하는 XPath 표현식에 사용자 정의 필드 이름을 매핑하는 키-값 쌍의 연관 배열 또는 사전입니다. 필드 이름은 유효한 Python 변수 이름이어야 합니다. XPath 표현식은 해당 테이블 범위에서 를 사용하는 |
그룹 |
|
|
사용자 정의 그룹 이름을 해당 그룹의 필드에 대한 XPath 컨텍스트를 설정하는 XPath 표현식에 매핑하는 키-값 쌍의 연관 배열 또는 사전입니다. Xpath 표현식은 해당 테이블의 또는 |
다음 Junos PyEZ 구성 테이블 및 뷰를 고려하십시오. UserTable
속성을 포함하는 get
은(는) 대상 디바이스의 사용자 계정에 대한 구성 데이터를 추출합니다. UserConfigTable
속성을 포함하는 set
은(는) 대상 디바이스에서 사용자 계정을 구성하고 사용자 계정에 대한 구성 데이터를 검색하는 데 사용할 수 있는 구조화된 구성 리소스를 정의합니다.
--- UserTable: get: system/login/user view: UserView UserView: groups: auth: authentication fields: username: name userclass: class uid: uid uidgroup: { uid: group } fullgroup: { full-name: group } fields_auth: password: encrypted-password --- UserConfigTable: set: system/login/user key-field: username view: UserConfigView UserConfigView: groups: auth: authentication fields: username: name userclass: class uid: uid fields_auth: password: encrypted-password
다음 섹션에서는 뷰의 다양한 구성 요소에 대해 설명합니다.
보기 이름
뷰 이름은 뷰에 대한 사용자 정의 식별자입니다. Table 정의에 속성을 포함하고 view
View 이름을 인수로 제공하여 Table을 특정 View와 연결합니다. 예를 들어:
--- UserTable: # Table definition view: UserView UserView: # View definition
필드 (필드)
선택한 구성 데이터에서 필요한 요소만 참조하도록 보기를 사용자 지정합니다. 이렇게 하려면 구성 테이블 항목에서 fields
원하는 요소를 선택하는 XPath 식에 대한 사용자 정의 필드 이름 매핑을 포함하는 연관 배열과 속성을 포함합니다. 필드 이름은 유효한 Python 변수 이름이어야 합니다. XPath 표현식은 테이블 정의의 또는 set
특성에 의해 get
정의된 구성 범위에 상대적입니다.
또는 set
속성을 포함하는 get
테이블을 사용하여 구성 데이터를 검색할 때 뷰에 정의된 필드는 구성에서 추출할 문을 식별합니다. 속성을 포함하고 set
디바이스에서 구성할 수 있는 리소스를 정의하는 테이블의 경우, 필드는 해당 리소스에 대해 구성할 수 있는 문을 식별합니다. 구성 리소스의 모든 identifier 요소에 대한 필드를 명시적으로 정의해야 합니다. 그런 다음 이러한 식별자 필드는 해당 테이블 정의의 key-field
속성에서 참조됩니다.
다음 샘플 구성 계층을 고려하십시오.
user@router> show configuration system login | display xml <rpc-reply> <configuration> <system> <login> ... <user> <name>user1</name> <uid>2001</uid> <class>super-user</class> <authentication> <encrypted-password>...</encrypted-password> </authentication> </user> <user> <name>readonly</name> <uid>3001</uid> <class>read-only</class> <authentication> <encrypted-password>...</encrypted-password> </authentication> </user> </login> </system> </configuration> </rpc-reply>
Table get
또는 set
매개 변수가 범위를 로 system/login/user
정의하는 경우 View 정의의 각 필드에 대한 XPath 식은 해당 컨텍스트를 기준으로 합니다. 다음 뷰 정의는 사용자 정의 필드 이름 username
, userclass
및 을uid
(를) 요소의 자식 요소에 매핑합니다.<user>
UserTable: get: system/login/user ... UserView: fields: username: name userclass: class uid: uid
테이블 정의에 속성이 포함된 set
경우, 개체를 고유하게 식별하는 식별자 요소에 대한 필드를 명시적으로 정의해야 하며, 이 경우에는 <name>
입니다. Table의 key-field
속성은 개체의 식별자 요소에 매핑되는 모든 View 필드를 참조해야 합니다. 항상 테이블의 및 key-field
속성에 set
하나 이상의 identifier 요소를 fields
정의해야 합니다.
그런 다음 Python 스크립트에서 View 항목을 변수 속성으로 액세스할 수 있습니다.
from jnpr.junos import Device from myTables.ConfigTables import UserTable with Device(host='router.example.com') as dev: users = UserTable(dev) users.get() for account in users: print("Username is {}\nUser class is {}".format(account.name, account.userclass))
구성 데이터를 검색할 때 데이터에 요소가 <name>
있는 각 개체에는 해당 요소의 값에 액세스하는 데 사용할 수 있는 기본 name
속성이 있습니다.
뷰 필드에는 해당 뷰를 참조하는 테이블의 유형에 따라 다양한 옵션이 포함될 수 있습니다. 구조화된 구성 리소스(set
)를 정의하는 테이블에는 디바이스에서 리소스를 구성할 때 Junos PyEZ 애플리케이션이 유효한 데이터를 제공하는지 확인하기 위해 각 필드에 대한 유형 및 제약 조건 검사가 포함될 수 있습니다. 구성 데이터()를 검색하는 테이블에는get
특정 요소에 대한 속성 값을 반환하거나 응용 프로그램에서 사용할 데이터 유형을 지정하는 옵션이 포함될 수 있습니다. 필드 옵션('get' 테이블) 및 필드 옵션('set' 테이블)은 각각 및 set
테이블을 사용할 get
때 포함할 수 있는 옵션을 간략하게 설명합니다.
필드 옵션('get' 테이블)
속성을 포함하고 get
디바이스에서 구성 데이터만 검색하는 테이블은 연결된 뷰의 필드에 대한 여러 옵션 또는 연산자를 정의할 수 있습니다. 이 섹션에서는 다양한 옵션에 대해 간략하게 설명합니다.
필드 형식은 필드 값의 형식을 결정합니다. 기본적으로 필드 값은 문자열로 저장됩니다. 필드 매핑의 값에 대해 다른 유형을 지정할 수 있습니다. 다음 예제에서는 요소의 값을 uid
정수로 정의합니다.
UserView: fields: username: name userclass: class uid: { uid : int }
다음 구문을 사용하여 필드 항목의 값을 Boolean으로 설정할 수도 있습니다.
fieldname: { element-name: (True | False)=regex(expression) }
요소의 값은 에 전달된 정규 표현식에 대해 평가됩니다 regex()
. 요소의 값이 표현식과 일치하면 필드 항목의 값이 형식에 정의된 부울로 설정됩니다. 다음 예제에서는 superuser
요소 값에 'super-user'가 class
포함된 경우 필드가 True로 설정됩니다.
superuser: { class : True=regex(super-user) }
Junos PyEZ는 또한 구성 뷰의 group
필드에 대한 연산자를 제공합니다. 이 연산자를 group
사용하면 Junos 구성 그룹에서 상속된 요소의 속성 값에 junos:group
액세스할 수 있습니다. 이 값은 해당 요소가 상속된 그룹을 나타냅니다.
예를 들어 다음 구성 remote
에서 사용자는 계층 수준에서 구성된 [edit groups global]
구성 그룹에서 상속 global
됩니다.
<user junos:group="global"> <name junos:group="global">remote</name> <uid junos:group="global">2000</uid> ... </user>
필드 매핑에 연산자를 group
포함하여 요소의 값 대신 속성의 값을 junos:group
참조합니다. 다음 예제에서는 연산자를 uidgroup
사용하여 group
및 fullgroup
필드를 정의합니다. 스크립트에서 이러한 필드 이름에 액세스하면 필드는 또는 full-name
요소와 연결된 속성의 값을 junos:group
참조합니다uid
.
UserView: groups: auth: authentication fields: username: name userclass: class uid: uid uidgroup: { uid: group } fullgroup: { full-name: group } fields_auth: password: encrypted-password
필드 옵션('set' 테이블)
구조화된 구성 리소스(set
)를 정의하는 테이블에는 디바이스에서 리소스를 구성할 때 Junos PyEZ 애플리케이션이 유효한 데이터를 제공하는지 확인하기 위해 연결된 보기의 각 필드에 대한 유형 및 제약 조건 검사가 포함될 수 있습니다. 유형 검사는 Junos PyEZ 애플리케이션이 특정 리소스에 대한 문을 구성할 때 올바른 데이터 유형을 제공하는지 확인합니다. 제한조건 검사를 사용하면 명령문에 대한 기본값을 정의하고 애플리케이션이 해당 명령문에 대해 올바른 범위에 있는 값을 제공하는지 확인할 수 있습니다. 연결된 View의 필드에 대한 옵션으로 포함된 지원되는 유형 및 제약 조건 검사는 이 섹션에 간략하게 설명되어 있습니다.
표 2 와 표 3 에는 구성 테이블의 뷰에서 필드에 대해 정의할 수 있는 유형 및 제약 조건 검사가 각각 요약되어 있습니다 set
. 유형 검사는 상호 배타적이지만 각 필드에 대해 여러 제약 조건 검사를 정의할 수 있습니다.
|
설명 |
예제 |
---|---|---|
|
필드는 또는 의 부울 값만 허용합니다. |
|
|
필드는 목록에 정의된 |
|
|
필드는 부동 소수점 값만 허용합니다. |
|
|
필드는 정수 값만 허용합니다. |
|
|
필드는 문자열 값만 허용합니다. |
|
제약 조건 검사 이름 |
설명 |
예제 |
---|---|---|
|
필드의 기본값입니다. 필드는 사용자가 필드를 명시적으로 구성하지 않을 때 기본값을 사용합니다. 사용자가 응용 프로그램에서 필드 값을 다시 설정하기 위해 메서드를 호출 |
|
|
필드에 |
|
|
필드에 |
|
필드에 대해 단일 유형 검사만 정의할 수 있지만 여러 제약 조건 검사를 정의할 수 있습니다. 따라서 필드는 값, 최소값(minValue
) 및 최대값(maxValue
)을 포함할 default
수 있습니다.
native_vlan : { 'native-vlan-id' : { 'type' : 'int', 'default' : 501, 'minValue' : 0, 'maxValue' : 4094 } }
minValue
및 maxValue
옵션은 옵션의 값에 type
따라 해석됩니다. 기본적으로 필드 값은 문자열입니다. 문자열의 경우, minValue
및 maxValue
는 문자열의 최소 및 최대 길이입니다. 정수와 부동 소수점의 경우 값은 해당 형식의 최소값과 최대값입니다.
필드에 대한 유형 또는 제약 조건 검사를 포함하고 사용자가 검사에 실패한 구성 데이터를 제공하는 경우, Junos PyEZ 애플리케이션은 오류를 설명하는 메시지와 함께 적절한 TypeError
또는 ValueError
예외를 발생시킵니다.
그룹(그룹) 및 필드 그룹(fields_)
그룹은 테이블 항목의 특정 노드 집합 내에서 요소를 선택하고 참조할 수 있는 바로 가기 방법을 제공합니다.
다음 구성 데이터에서 <authentication>
요소에는 사용자의 인증 방법에 해당하는 자식 요소가 포함되어 있습니다.
<configuration> <system> <login> ... <user> <name>user1</name> <uid>2001</uid> <class>super-user</class> <authentication> <encrypted-password>...</encrypted-password> </authentication> </user> <user> <name>readonly</name> <uid>3001</uid> <class>read-only</class> <authentication> <encrypted-password>...</encrypted-password> </authentication> </user> </login> </system> </configuration>
View 정의 내에서 속성을 사용하면 fields
선택한 구성 계층을 기준으로 각 요소에 전체 XPath 식을 제공하여 자식 요소에 액세스할 수 있습니다. 예를 들어 Table get
또는 set
속성이 계층 수준에서 요소를 [edit system login]
선택하는 <user>
경우 필드 항목 매핑은 다음 XPath 식을 사용합니다.
UserConfigTable: set: system/login/user ... UserConfigView: fields: password: authentication/encrypted-password
또는 XPath 컨텍스트 <authentication>
를 요소로 설정하는 그룹을 만든 다음 해당 컨텍스트와 관련된 XPath 식만 제공하는 필드 그룹 항목을 정의할 수 있습니다. View 정의 내에서 원하는 수의 그룹을 정의할 수 있습니다.
그룹을 작성하려면 특성을 포함하고 groups
사용자 정의 그룹 이름을 새 컨텍스트를 정의하는 XPath 표현식에 맵핑하십시오. 그런 다음 이름 fields_
뒤에 그룹 이름이 오는 필드 그룹을 정의합니다. 필드 그룹은 사용자 정의 필드 이름과 XPath 표현식의 매핑을 포함하는 연관 배열로, 이제 에 groups
설정된 컨텍스트에 상대적입니다. 필드 이름은 유효한 Python 변수 이름이어야 합니다.
다음 예는 그룹 auth
및 해당 필드 group fields_auth
을 정의합니다. auth
그룹은 컨텍스트를 system/login/user/authentication
계층 수준으로 password
설정하고 필드는 요소의 값을 참조합니다 encrypted-password
.
UserConfigTable: set: system/login/user ... UserConfigView: groups: auth: authentication fields_auth: password: encrypted-password ...
필드 또는 필드 그룹 중 어떤 것을 사용하든, 사용자 정의 필드 이름을 사용하여 Junos PyEZ 스크립트 내에서 동일한 방식으로 값에 액세스합니다.