본문 바로가기

카테고리 없음

Programmability for Networker : Part 21 (Arista pyeapi:3)

pyeapi, api, node, python, programmability : today Key


이번 포스팅은 지난 시간에 이어서, arista의 pyeapi에 대한 간략한 포스팅입니다.

pyeapi를 사용 시에 기본적으로 보게 된, 몇 가지의 코드 내용을 간략하게 알아봅니다.

별도로 구현부까지는 세부적으로 알아보지 않고, 각 주요 메서드에 대한 사용법과 설명만 하였습니다.

추후에 필요에 따라서 이렇게 주요 메서드에 대해서는 추가로 알아 볼 예정이며,

또한 물론 각 메서드를 사용한 코드와 동작 결과에 대한 예제도 함께 알아보겠습니다.


 


class Node(object): 

  

   def config(self, commands):

       ▷ commands는 String이나 List형으로 구성되나, String형은 내부적으로 List Type으로 다시 변경해서 처리된다.

       ▷ 실제 Command 실행은 run.commands 메서드를 사용

 


   def enable(self, commands, encoding='json', strict=False):

       ▷ Command는 List 형태로 전송

       ▷ 기존 Command 요청 형태는 json이며, json을 지원하지 않는 경우에는 text로 전송하도록 함

       ▷ strtict가 false 경우에는 json을 지원하지 않는 command에 대해서 text 방식으로 시도.

       ▷ Config 모드의 명령은 지원하지 않음.

       ▷ 실제 Command 실행은 run.commands 메서드를 사용

 

 

    def run_commands(self, commands, encoding='json'):

       ▷ 명령어를 전송하는 하위 계층의 메서드

       ▷ 일반적으로 직접 사용하지 않고, config나 enable 메서드를 통해 사용

       ▷ 실제 장비로 Command의 전송은 node 클래스의 멤버의 _connection의 execute 메서드 사용

           ※  _connection

                - connect_to 메서드 연결 시, Node 객체를 생성하게 되는데, Node 객체 초기화 시에

                 연결하고자 하는 node의 정보를 가지고 make_connection 메서드를 통해서 node와 연결할 객체를

                 eapi 연결 type에 따라서 socket, http_local, http, https EapiConnection을 호출

          

 

    def api(self, name, namespace='pyeapy.api'):

       ▷ name 매개변수를 통해서 API 모듈을 자동으로 Load

       ▷ 기본 namespace는 pyepai.api 이므로, api 내의 모듈 명만 써주면 됨.

       ▷ initialize 메서드와 instance 메서드에 확인하고, 해동 모듈을 리턴 함.

 

 

    def connect_to(name):

       ▷  매개변수의 name으로 node 정보가 있는 파일에서, 해당 node의 접속 정보(ip, id, pass 등)을 가지고 node 객체를 생성