示例#1
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)
示例#2
0
 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)
示例#3
0
 def update_dic(self, manager, secret, device_id):
     payload = {
         'manager': manager,
         'secret': secret,
         'device_id': device_id
     }
     send_event(self.socket, 'dic', payload)
示例#4
0
 def update_device(self,
                   device_name,
                   manager=None,
                   secret=None,
                   device_id=None):
     sock_file = self.get_file(device_name, 'netconf', ftype='sock')
     payload = {
         'manager': manager,
         'secret': secret,
         'device_id': device_id
     }
     send_event(sock_file, 'dic', payload)
示例#5
0
 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)
示例#6
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)
示例#7
0
 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)