def put(self, ipv4): """Updates a DHCP recordd""" args = parser.parse_args(request) if not validation.is_ipv4(ipv4): return {'message': 'please provide a valid ipv4 address'}, 406 if not dhcp.DhcpConfig.exists_ipv4(ipv4): return abort(404) dhcp_config = dhcp.DhcpConfig.get_by_ip(ipv4) dhcp_config.set_settings(False, args.mac, args.ip_address, args.gateway, args.networkmask) for args_item in parser.args: if not args_item.required and args_item.name in args and args[args_item.name] is not None and \ args_item.name is not 'gateway' and args_item.name is not 'networkmask': dhcp_config.add_additional_statement(args_item.name, args[args_item.name]) dhcp_config.remove_by_ipv4() dhcp_config.create_isc_ldap() location = url_for('dhcpipv4object', _method='GET', ipv4=dhcp_config.ip_address) return vars(dhcp_config), 201, {'Location': location}
def put(self, ipv4): """Updates a DHCP recordd""" args = parser.parse_args(request) if not validation.is_ipv4(ipv4): return {'message': 'please provide a valid ipv4 address'}, 406 if not dhcp.DhcpConfig.exists_ipv4(ipv4): return abort(404) dhcp_config = dhcp.DhcpConfig.get_by_ip(ipv4) dhcp_config.set_settings( False, args.mac, args.ip_address, args.gateway, args.networkmask) for args_item in parser.args: if not args_item.required and args_item.name in args and args[args_item.name] is not None and \ args_item.name is not 'gateway' and args_item.name is not 'networkmask': dhcp_config.add_additional_statement( args_item.name, args[args_item.name]) dhcp_config.remove_by_ipv4() dhcp_config.create_isc_ldap() location = url_for( 'dhcpipv4object', _method='GET', ipv4=dhcp_config.ip_address) return vars(dhcp_config), 201, {'Location': location}
def get(self, ipv4): """Returns a single DHCP record based on the provided ipv4""" if not validation.is_ipv4(ipv4): return {'message': 'please provide a valid ipv4 address'}, 406 if not dhcp.DhcpConfig.exists_ipv4(ipv4): return abort(404) dhcp_config = dhcp.DhcpConfig.get_by_ip(ipv4) return vars(dhcp_config)
def delete(self, ipv4): """Deletes a DHCP record""" if not validation.is_ipv4(ipv4): return {'message': 'please provide a valid ipv4 address'}, 406 if not dhcp.DhcpConfig.exists_ipv4(ipv4): return abort(404) dhcp_config = dhcp.DhcpConfig.get_by_ip(ipv4) dhcp_config.remove_by_ipv4() return '', 204
def post(self): """Creates a new PXE record""" args = parser.parse_args() if ((args.gateway is None and config['DHCPConfig'].getboolean('force_gateway')) or args.networkmask is None) and not validation.is_cidr( args.ip_address): return { 'message': 'missing parameter gateway and networkmask or give an ip address in CIDR notation' }, 406 if not validation.is_ipv4(args.ip_address) and not validation.is_cidr( args.ip_address): return {'message': 'please provide a valid ipv4 address'}, 406 if not validation.is_mac(args.mac): return {'message': 'please provide a valid mac address'}, 406 if dhcp.DhcpConfig.exists_ipv4(args.ip_address): return { 'message': 'dhcp record for ip address %s already exists' % args.ip_address }, 409 if dhcp.DhcpConfig.exists_mac(args.mac): return { 'message': 'dhcp record for mac address %s already exists' % args.mac }, 409 dhcp_config = dhcp.DhcpConfig(args.mac, args.ip_address, args.gateway, args.networkmask) for args_item in parser.args: if not args_item.required and args_item.name in args and args[args_item.name] is not None and \ args_item.name is not 'gateway' and args_item.name is not 'networkmask': dhcp_config.add_additional_statement(args_item.name, args[args_item.name]) dhcp_config.create_isc_ldap() location = url_for('dhcpipv4object', _method='GET', ipv4=dhcp_config.ip_address) return vars(dhcp_config), 201, {'Location': location}
def post(self): """Creates a new PXE record""" args = parser.parse_args() if ((args.gateway is None and config['DHCPConfig'].getboolean( 'force_gateway')) or args.networkmask is None) and not validation.is_cidr(args.ip_address): return { 'message': 'missing parameter gateway and networkmask or give an ip address in CIDR notation'}, 406 if not validation.is_ipv4( args.ip_address) and not validation.is_cidr( args.ip_address): return {'message': 'please provide a valid ipv4 address'}, 406 if not validation.is_mac(args.mac): return {'message': 'please provide a valid mac address'}, 406 if dhcp.DhcpConfig.exists_ipv4(args.ip_address): return {'message': 'dhcp record for ip address %s already exists' % args.ip_address}, 409 if dhcp.DhcpConfig.exists_mac(args.mac): return {'message': 'dhcp record for mac address %s already exists' % args.mac}, 409 dhcp_config = dhcp.DhcpConfig( args.mac, args.ip_address, args.gateway, args.networkmask) for args_item in parser.args: if not args_item.required and args_item.name in args and args[args_item.name] is not None and \ args_item.name is not 'gateway' and args_item.name is not 'networkmask': dhcp_config.add_additional_statement( args_item.name, args[args_item.name]) dhcp_config.create_isc_ldap() location = url_for( 'dhcpipv4object', _method='GET', ipv4=dhcp_config.ip_address) return vars(dhcp_config), 201, {'Location': location}