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
sys.exit(2) with sqla_session() as session: db_entry: Device = session.query(Device).filter( Device.ztp_mac == ztp_mac).first() if db_entry: if db_entry.state == DeviceState.DHCP_BOOT: # TODO: check if device actually booted with correct config by trying to log in? db_entry.state = DeviceState.DISCOVERED db_entry.dhcp_ip = dhcp_ip logger.info( "New device booted via DHCP to state DISCOVERED: {}". format(ztp_mac)) else: logger.error( "New device booted via DHCP in unhandled state {}: {}". format(db_entry.state, ztp_mac)) else: errors = Device.device_add(ztp_mac=ztp_mac, dhcp_ip=dhcp_ip, hostname=f'mac-{ztp_mac}', platform=platform, state=DeviceState.DHCP_BOOT, device_type=DeviceType.UNKNOWN) if errors: logger.error( "Errors while adding device from dhcp_hook: {}".format( errors)) logger.info( "New device booted via DHCP to state DHCP_BOOT: {}".format( ztp_mac))