コード例 #1
0
ファイル: netconf.py プロジェクト: smurugap/simulator
 def post(self, fabric_name, devices=None, template=None, kv_pairs=None):
     pRouters = Fabric._get(fabric_name)[fabric_name]
     for device in devices or []:
         if device not in pRouters:
             raise InvalidUsage('device %s not found in fabric %s' %
                                (device, fabric_name))
     devices = devices or list(pRouters.keys())
     if kv_pairs:
         payload_kv = dict()
         for kv_pair in kv_pairs:
             value = kv_pair['value']
             try:
                 value = ast.literal_eval(value)
             except ValueError:
                 try:
                     value = int(value)
                 except ValueError:
                     pass
             payload_kv[kv_pair['key']] = value
     if template:
         payload_register = {template['rpc_name']: template['content']}
     for device in devices:
         sock_file = Fabric.get_file(device, 'netconf', ftype='sock')
         if kv_pairs:
             send_event(sock_file, 'update', payload_kv)
         if template:
             send_event(sock_file, 'register', payload_register)
コード例 #2
0
 def post(self, fabric_name, kv_pairs):
     '''
     {
     "test-Leaf0": {"interfaces": {"et-0/0/1": {"admin-status": "DOWN",
                                                "oper-status": "DOWN"},
                                   "et-0/0/2": {"oper-status": "DOWN"}
                                  }
                   },
     "test-Leaf1": {"interfaces": {"et-0/0/3": {"oper-status": "DOWN"}},
                    "sub_interfaces": {"et-0/0/4.10": {"in-pkts": 10000000}}
                   }
     }
     '''
     pRouters = Fabric._get(fabric_name)[fabric_name]
     devices = kv_pairs.keys()
     for device in devices:
         if device not in pRouters:
             raise InvalidUsage('device %s not found in fabric %s' %
                                (device, fabric_name))
     for device, sensors_info in kv_pairs.items():
         sock_file = Fabric.get_file(device, 'openconfig', ftype='sock')
         try:
             sensors_info = ast.literal_eval(sensors_info)
         except:
             pass
         send_event(sock_file, 'update', sensors_info)
コード例 #3
0
ファイル: snmp.py プロジェクト: smurugap/simulator
 def post(self, fabric_name, devices=None, oids=None, trap=None):
     pRouters = Fabric._get(fabric_name)[fabric_name]
     for device in devices or []:
         if device not in pRouters:
             raise InvalidUsage('device %s not found in fabric %s' %
                                (device, fabric_name))
     devices = devices or list(pRouters.keys())
     for device in devices:
         sock_file = Fabric.get_file(device, 'snmp', ftype='sock')
         if oids:
             send_event(sock_file, 'update', oids)
         if trap:
             send_event(sock_file, 'send_trap', trap)
コード例 #4
0
ファイル: netconf.py プロジェクト: smurugap/simulator
 def get(self, fabric_name, devices=None, raw=None):
     pRouters = Fabric._get(fabric_name)[fabric_name]
     for device in devices or []:
         if device not in pRouters:
             raise InvalidUsage('device %s not found in fabric %s' %
                                (device, fabric_name))
     devices = devices or list(pRouters.keys())
     payload = {'raw': True if raw else False}
     summary = dict()
     for device in devices:
         sock_file = Fabric.get_file(device, 'netconf', ftype='sock')
         output = send_event(sock_file, 'summary', payload)
         summary.update({device: output})
     return jsonify(summary)
コード例 #5
0
 def post(self,
          fabric_name,
          devices=None,
          level=None,
          facility=None,
          message=None):
     if facility not in SysLogHandler.facility_names:
         raise InvalidUsage('Valid facility names are %s' %
                            (list(SysLogHandler.facility_names.keys())))
     if level not in SysLogHandler.priority_names:
         raise InvalidUsage('Valid levels are %s' %
                            (list(SysLogHandler.priority_names.keys())))
     pRouters = Fabric._get(fabric_name)[fabric_name]
     for device in devices or []:
         if device not in pRouters:
             raise InvalidUsage('device %s not found in fabric %s' %
                                (device, fabric_name))
     devices = devices or list(pRouters.keys())
     payload = {'facility': facility, 'message': message, 'level': level}
     for device in devices:
         sock_file = Fabric.get_file(device, 'syslog', ftype='sock')
         send_event(sock_file, 'send_syslog', payload)
コード例 #6
0
 def post(self,
          fabric_name,
          action='start',
          n_flows=None,
          bms_per_router=None,
          direction='ingress'):
     self.leafs = list()
     self.spines = list()
     self.flows = defaultdict(list)
     self.bms_per_prouter = int(bms_per_router or 0)
     pRouters = Fabric._get(fabric_name)[fabric_name]
     self.direction = direction
     for prouter, info in pRouters.items():
         if info['role'] == 'leaf':
             self.leafs.append(prouter)
         else:
             self.spines.append(prouter)
     if action.lower() == 'start':
         for i in range(int(n_flows)):
             self.add_sflow()
     for prouter in self.leafs + self.spines:
         self.update_flows(prouter)
コード例 #7
0
ファイル: simulator_agent.py プロジェクト: smurugap/simulator
 def get(self):
     return Fabric.get()
コード例 #8
0
ファイル: simulator_agent.py プロジェクト: smurugap/simulator
 def delete(self, fabric_name):
     return Fabric.delete(fabric_name)
コード例 #9
0
ファイル: simulator_agent.py プロジェクト: smurugap/simulator
 def put(self, fabric_name):
     data = request.get_json(force=True)
     return Fabric().put(fabric_name, **data)
コード例 #10
0
ファイル: simulator_agent.py プロジェクト: smurugap/simulator
 def get(self, fabric_name):
     return Fabric.get(fabric_name)
コード例 #11
0
ファイル: simulator_agent.py プロジェクト: smurugap/simulator
 def put(self, device_name):
     data = request.get_json(force=True)
     Fabric().update_device(device_name, **data)
コード例 #12
0
 def update_flows(self, prouter):
     with open(Fabric.get_file(prouter, ftype='sflows'), 'w') as fd:
         json.dump(self.flows[prouter], fd, indent=4)