Пример #1
0
    def put(self, mac):
        """Updates a DHCP record"""
        args = parser.parse_args(request)

        if not validation.is_mac(mac):
            return {'message': 'please provide a valid mac address'}, 406

        if not dhcp.DhcpConfig.exists_mac(mac):
            return abort(404)

        dhcp_config = dhcp.DhcpConfig.get_by_mac(mac)

        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_mac()

        dhcp_config.create_isc_ldap()

        location = url_for('dhcpmacobject', _method='GET', mac=dhcp_config.mac)
        return vars(dhcp_config), 201, {'Location': location}
Пример #2
0
    def put(self, mac):
        """Updates a DHCP record"""
        args = parser.parse_args(request)

        if not validation.is_mac(mac):
            return {'message': 'please provide a valid mac address'}, 406

        if not dhcp.DhcpConfig.exists_mac(mac):
            return abort(404)

        dhcp_config = dhcp.DhcpConfig.get_by_mac(mac)

        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_mac()

        dhcp_config.create_isc_ldap()

        location = url_for('dhcpmacobject', _method='GET', mac=dhcp_config.mac)
        return vars(dhcp_config), 201, {'Location': location}
Пример #3
0
    def get(self, mac):
        """Returns a single DHCP record based on the provided MAC"""
        if not validation.is_mac(mac):
            return {'message': 'please provide a valid mac address'}, 406

        if not dhcp.DhcpConfig.exists_mac(mac):
            return abort(404)

        dhcp_config = dhcp.DhcpConfig.get_by_mac(mac)

        return vars(dhcp_config)
Пример #4
0
    def get(self, mac):
        """Returns a single DHCP record based on the provided MAC"""
        if not validation.is_mac(mac):
            return {'message': 'please provide a valid mac address'}, 406

        if not dhcp.DhcpConfig.exists_mac(mac):
            return abort(404)

        dhcp_config = dhcp.DhcpConfig.get_by_mac(mac)

        return vars(dhcp_config)
Пример #5
0
    def delete(self, mac):
        """Deletes a DHCP record"""
        if not validation.is_mac(mac):
            return {'message': 'please provide a valid mac address'}, 406

        if not dhcp.DhcpConfig.exists_mac(mac):
            return abort(404)

        dhcp_config = dhcp.DhcpConfig.get_by_mac(mac)
        dhcp_config.remove_by_mac()

        return '', 204
Пример #6
0
    def delete(self, mac):
        """Deletes a DHCP record"""
        if not validation.is_mac(mac):
            return {'message': 'please provide a valid mac address'}, 406

        if not dhcp.DhcpConfig.exists_mac(mac):
            return abort(404)

        dhcp_config = dhcp.DhcpConfig.get_by_mac(mac)
        dhcp_config.remove_by_mac()

        return '', 204
Пример #7
0
    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}
Пример #8
0
    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}