본문 바로가기

DevOps/Programmability

Programmability for Networker : Part 15 (Cisco OnePK:4)

OnePK 예제

 


지난 포스팅에 이어서 Python을 사용한 OnePK 예제를 다뤄봅니다.

간략한 예제를 통해서, OnePK를 어떻게 사용할 수 있는지 알아보겠습니다.


 

 

○ OnePK 두 번째 예제

   - Network Element의 Interface 정보를 가져와서 출력해보는 예제입니다

   - Ethernet Type의 Interface 정보를 가져오고, 해당 Interface의 Description을 출력합니다

 

   ◆ 실행결과

 

 

   ◆ 소스코드

  

   - 기본 코드는 지난 포스팅인 Python for Networker Part 14(OnePK3)을 참고해주시면 됩니다.

   - Interface를 정보를 가져오기 위해서 OnePK에서 제공하는 Package중에, Interface라는 Package를 사용합니다.

   - 여기서는 NetworkInterface와 InterfaceFilter라는 Class를 사용합니다.

   - 현재 Element(Network Device)의 Interface 정보를 가져오기 위해서는 get_interface_list 메서드를 사용하게 됩니다.

   - get_interface_list 메서드를 사용하기 위해서는 InterfaceFilter를 지정해줘야 합니다

     InterfaceFilter를 지정하기 위해서, InterfaceFilter에 대한 객체를 생성하는 데

     InterfaceFilter의 객체 생성 시에는 NetworkInterface의 InterfaceTypes을 선택해야 합니다. (Default는 ONEP_IF_TYPE_ANY)

    - 코드 상에서 보면, InterfaceTypes를 사용하기 위해서 NetworkInterface Class의 InterfaceTypes라는 enum 멤버를

      intType이라는 변수에 할당하고, intType에서 Ethernet Type을 지정해서, intfilter라는 InterfaceFilter 객체를 생성합니다

      intfilter를 이용해서 원하는 Interface 리스트 정보를 가져옵니다. 

    - LIST형태로 리턴받은 NetworkInterface에서 하나씩 객체를 가져와서 Interface이름과 description을 출력한다.

    - descritpion의 경우에는 get_config() 메서드를 사용하여, InterfaceConfig 를 리턴받아서, InterfaceConfig의 메서드를 사용한다.

  

 

○ OnePK 두 번째 예제 변형-1

   - 위에서 출력한 Interface 정보를 보면, 인터페이스가 순번대로 반환되지 않기 때문에 0번 인터페이스부터 7번까지 차례대로

     출력되지 않는다.

   - 이를 해결하기 위해서 다음과 같이 코드를 한 줄 삽입하여 정렬을 하게 되면 아래의 두번째 예제 변형의 결과값처럼 차례대로

     인터페이스 정보를 출력할 수 있다.

  

 sortInt =  sorted(myInt,key=lambda intf: intf.name)

 

   ◆ 실행결과

 

 

○ OnPK 두 번째 예제 변형 -2

   - Description 이외에 추가적으로 필요한 정보는 OnePK 3번째 시간에서 얘기하였던, OnePK API에서 필요한 값을 찾아서,

    얼마든지 추가하여 정보를 알아낼 수 있다. 다음은 Interface의 상태가 Up/Down인지 확인한 내용까지 출력하였다.

 

   ◆ 실행결과

 

 

○ OnePK 세 번째 예제

   - OnePK 두 번째 예제처럼, Interface 정보를 가져올 수도 있지만, 실제 설정을 할 수 도 있다.

   - 다음은 Interface의 Description 정보를 변경한 간단한 예제이다. 

    

 

   - 위 코드의 실형결과를 보면, G0/6의 Interface의 Descritpion이 없다가 ex3.py를 실행하였을 때 설정이 되는 것을 확인하고

     다시 전체 인터페이스 정보를 출력해보면 G0/6에 정상적으로 Descritpion이 바뀐 것을 확인할 수 있다.

 

   ◆ 소스코드

         ※ 현재 포스팅된 Ex3의 예제는 결과값이 Sort를 다르게 써서, 조금 다릅니다. 변경 코드는 저녁에 이미지 교체 예정입니다

               이미지 교체 후에는 본 안내 메시지는 삭제할 예정입니다

 

   - NetwortInterface List 중에서 6번째(Index는 0부터 시작)의 Description을 set_description 메서드를 사용하여 변경합니다.

   - 변경 전/후로 Descritpion을 출력해서 결과를 확인합니다

 

 

◆ 이번 포스팅에서는 OnePK 2,3번째의 예제를 통해서 Network Element의 Interface에 대한 정보를 확인 및 설정하는 방법을

    알아 보았습니다.  2,3번 모두 기본 예제의 연장선상에 있으며 앞으로 다룰 예제들도 비슷할 것입니다

    결국 핵심은 예제가 아니라, 예제를 바탕으로 OnePK에서 제공하는 API를 잘 활용하는 방법과 아이디어가 될 것 같습니다.