Example #1
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
Example #2
0
        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))