Beispiel #1
0
 def post(self):
     """ Add a device """
     json_data = request.get_json()
     supported_platforms = ['eos', 'junos', 'ios', 'iosxr', 'nxos', 'nxos_ssh']
     data = {}
     errors = []
     data, errors = Device.validate(**json_data)
     if errors != []:
         return empty_result(status='error', data=errors), 400
     with sqla_session() as session:
         instance: Device = session.query(Device).filter(Device.hostname ==
                                                         data['hostname']).one_or_none()
         if instance:
             errors.append('Device already exists')
             return empty_result(status='error', data=errors), 400
         if 'platform' not in data or data['platform'] not in supported_platforms:
             errors.append("Device platform not specified or not known (must be any of: {})".
                           format(', '.join(supported_platforms)))
             return empty_result(status='error', data=errors), 400
         if data['device_type'] in ['DIST', 'CORE']:
             if 'management_ip' not in data or not data['management_ip']:
                 data['management_ip'] = cnaas_nms.confpush.underlay.find_free_mgmt_lo_ip(session)
             if 'infra_ip' not in data or not data['infra_ip']:
                 data['infra_ip'] = cnaas_nms.confpush.underlay.find_free_infra_ip(session)
         new_device = Device.device_create(**data)
         session.add(new_device)
         session.flush()
         return empty_result(status='success', data={"added_device": new_device.as_dict()}), 200
Beispiel #2
0
 def post(self):
     json_data = request.get_json()
     data = {}
     errors = []
     data, errors = Device.validate(**json_data)
     if errors != []:
         return empty_result(status='error', data=errors), 404
     with sqla_session() as session:
         instance: Device = session.query(Device).filter(
             Device.hostname == data['hostname']).one_or_none()
         if instance is not None:
             errors.append('Device already exists')
             return errors
     Device.device_add(**json_data)
     return empty_result(status='success'), 200