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)
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)
def update_dic(self, manager, secret, device_id): payload = { 'manager': manager, 'secret': secret, 'device_id': device_id } send_event(self.socket, 'dic', payload)
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)
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)
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)
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)