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
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