ネットワークデバイス制御用の抽象API 2:コマンド入力前後モードで移動


Previously
メインメソッドのコマンド入力前後モード移動の問題
  • ネットワークデバイスの設定例:ポート無効化プロセス
  • # config terminal
    (config)# interface ge1/1
    (ge1/1)# shutdown
    (ge1/1)# exit
    (config)# exit
    #
    ポートge 1/1を無効にして有効にする場合
  • 第1の方法では、モード移動効率が低下するという問題がある.
  • # config terminal
    (config)# interface ge1/1
    (ge1/1)# shutdown
    (ge1/1)# exit
    (config)# exit
    #
    # config terminal
    (config)# interface ge1/1
    (ge1/1)# no shutdown
    (ge1/1)# exit
    (config)# exit
    #
  • のシーケンスが必要:効率的なモード移動
  • # config terminal
    (config)# interface ge1/1
    (ge1/1)# shutdown
    (ge1/1)# no shutdown
    (ge1/1)# exit
    (config)# exit
    #
    上のような状況です.
    モード移動は効率が悪く、時間がかかります.
    最初のメソッド問題では、コマンド入力前後モード移動の問題があります.
    モード遷移を効率的に行うためには,近接が必要である.
    2つ目の方法:アクセス方法
    ルールを作った.
    標準モードがあります.
    標準モードで
    コマンドの入力
    移動モード.
    標準になったパターンに戻ります.
    順序12345コマンドconfig端末linterface ge 1/1モード位置基準モード(enable)configface ge 1/1 config基準モード(enable)を終了
    pseudocode
  • モードクラスは、모드에 대한 정의および모드로 이동하는 명령어および기준모드로 돌아가는 명령들として定義される.
  • セッションに依存しないのでModeモード名1()もデバイスとして入力できません.
  • 
    Class ModeBase(object):
       def 모드명1(self):
           return (
               모드를_이동하기_위한_명령어들,
               모드명들,
               기준모드로_돌아가는_명령어들
           )
           
       def 모드명2(self):
           return (
               모드를_이동하기_위한_명령어들,
               모드명들,
               기준모드로_돌아가는_명령어들
           )
        
    Class ModeClass1(ModeBase):
       def 모드명3(self):
           return (
               모드를_이동하기_위한_명령어들,
               모드명들,
               기준모드로_돌아가는_명령어들
           )
     
     
     모드_별칭_이름_1 = ModeClass1()
     
     
    Class 기능1SubFeatureClass1(FeatureCommon):
        def __init__(self):
            self._모드 = 모드_별칭_이름_1
            
        def 명령1(self, 필요한_데이터):
            메세지.CLI = 메세지_CLI(self._모드.모드1, 필요한_데이터)
            return 메세지
    
        def 명령2(self, 필요한_데이터):
            메세지.CLI = 메세지_CLI(self._모드.모드2, 필요한_데이터)
            return 메세지
            
        def 명령3(self, 필요한_데이터):
            메세지.CLI = 메세지_CLI(self._모드.모드3, 필요한_데이터)
            return 메세지
    これは私が欲しいものです.👉
  • の第1の方法よりも効率的にモード移動を行い、実行速度も速い.
    △基準モードでは、モードが奥に進むほど速度が遅くなります.
  • # config terminal
    (config)# interface ge1/1
    (ge1/1)# shutdown
    (ge1/1)# exit
    (config)# end
    #
    
    
    # config terminal
    (config)# 모드1_이동_명령어
    (config-모드1)# 모드2_이동_명령어
    (config-모드1-모드2)# 명령1
    (config-모드1-모드2)# 명령2
    (config-모드1-모드2)# exit
    (config-모드1)# 명령3
    (config)# 명령4
    (config)# end
    #