def clean( self, *args, **kwargs ): super().clean( *args, **kwargs ) errors = {} if self.dependency is None and self.structure is None: errors[ 'structure' ] = 'Either structure or dependency is required' if self.structure is None and self.script_structure is None: if self.create_script_name is not None: errors[ 'create_script_name' ] = 'structure or script_sctructure are required for scripts' if self.destroy_script_name is not None: errors[ 'destroy_script_name' ] = 'structure or script_sctructure are required for scripts' if self.create_script_name is not None and not name_regex.match( self.create_script_name ): errors[ 'create_script_name' ] = '"{0}" is invalid'.format( self.create_script_name ) if self.destroy_script_name is not None and not name_regex.match( self.destroy_script_name ): errors[ 'destroy_script_name' ] = '"{0}" is invalid'.format( self.destroy_script_name ) if self.destroy_script_name is not None and self.destroy_script_name == self.create_script_name: errors[ 'destroy_script_name' ] = 'destroy and create script must be different' if errors: raise ValidationError( errors )
def clean(self, *args, **kwargs): super().clean(*args, **kwargs) errors = {} if not name_regex.match(self.interface_name): errors['interface_name'] = '"{0}" is invalid'.format( self.interface_name[0:50]) try: if self.pointer is not None: if self.address_block is not None: errors['address_block'] = 'Conflicts with Pointer' errors['pointer'] = 'Conflicts with Address_block' if self.offset is not None: errors['offset'] = 'Conflicts with Pointer' errors['pointer'] = 'Conflicts with Offset' except ObjectDoesNotExist: pass if not self.sub_interface: self.sub_interface = None else: if self.sub_interface < 0: errors['sub_interface'] = 'Must be a positive value' if self.vlan > 4096 or self.vlan < 0: errors['vlan'] = 'must be between 0 and 4096' if self.is_primary: if self.networked.address_set.filter(is_primary=True).count() > 0: errors['is_primary'] = 'Networked allready has a primary ip' if errors: raise ValidationError(errors)
def clean(self, *args, **kwargs): super().clean(*args, **kwargs) errors = {} if not name_regex.match(self.name): errors['name'] = '"{0}" is invalid'.format(self.name[0:50]) if errors: raise ValidationError(errors)
def clean(self, *args, **kwargs): super().clean(*args, **kwargs) errors = {} if self.name and not name_regex.match(self.name): errors['name'] = 'Invalid' if errors: raise ValidationError(errors)
def clean( self, *args, **kwargs ): super().clean( *args, **kwargs ) errors = {} if not name_regex.match( self.locator ): errors[ 'locator' ] = 'Invalid' if self.blueprint_id is not None and self.type not in self.blueprint.foundation_type_list: errors[ 'name' ] = 'Blueprint "{0}" does not list this type ({1})'.format( self.blueprint, self.type ) if errors: raise ValidationError( errors )
def clean( self, *args, **kwargs ): super().clean( *args, **kwargs ) errors = {} if not name_regex.match( self.name ): errors[ 'name' ] = 'BluePrint name "{0}" is invalid'.format( self.name ) results = parser.lint( self.script ) if results is not None: errors[ 'script' ] = 'Script is invalid: {0}'.format( results ) if errors: raise ValidationError( errors )
def clean( self, *args, **kwargs ): super().clean( *args, **kwargs ) errors = {} if not name_regex.match( self.name ): # if this regex changes, make sure to update tcalc parser in archetect errors[ 'name' ] = 'BluePrint Script name "{0}" is invalid'.format( self.name ) if self.config_values is not None: for name in self.config_values: if not config_name_regex.match( name ): errors[ 'config_values' ] = 'config item name "{0}" is invalid'.format( name ) break if errors: raise ValidationError( errors )
def clean(self, *args, **kwargs): super().clean(*args, **kwargs) errors = {} if not name_regex.match(self.name): errors['name'] = 'name "{0}" is invalid'.format(self.name) for name in self.config_values: if not config_name_regex.match(name): errors[ 'config_values'] = 'config item name "{0}" is invalid'.format( name) break if errors: raise ValidationError(errors)
def clean(self, *args, **kwargs): super().clean(*args, **kwargs) errors = {} if not name_regex.match(self.interface_name): errors['interface_name'] = '"{0}" is invalid'.format( self.interface_name[0:50]) try: if self.address_block and self.networked and self.address_block.site != self.networked.site: errors[ 'address_block'] = 'Address is not in the same site as the Networked it belongs to' except ObjectDoesNotExist: pass # something else should make sure address_block and networked are defined if errors: # if either of the above happen, don't bother with the rest raise ValidationError(errors) try: if self.pointer is not None: if self.address_block is not None: errors['address_block'] = 'Conflicts with Pointer' errors['pointer'] = 'Conflicts with Address_block' if self.offset is not None: errors['offset'] = 'Conflicts with Pointer' errors['pointer'] = 'Conflicts with Offset' except ObjectDoesNotExist: pass if not self.sub_interface: self.sub_interface = None else: if self.sub_interface < 0: errors['sub_interface'] = 'Must be a positive value' if self.is_primary: if self.pk is not None: Aobjects = self.networked.address_set.filter(~Q(pk=self.pk)) else: Aobjects = self.networked.address_set.all() if Aobjects.filter(is_primary=True).count() > 0: errors['is_primary'] = 'Networked allready has a primary ip' if errors: raise ValidationError(errors)
def clean( self, *args, **kwargs ): super().clean( *args, **kwargs ) errors = {} if self.name and not name_regex.match( self.name ): errors[ 'name' ] = 'Invalid' if self.config_values is not None: for name in self.config_values: if not config_name_regex.match( name ): errors[ 'config_values' ] = 'config item name "{0}" is invalid'.format( name ) break if name in ( 'domain_search', 'dns_servers', 'log_servers' ): if not isinstance( self.config_values[ name ], list ): errors[ 'config_values' ] = 'config item "{0}" must be a list'.format( name ) break if errors: raise ValidationError( errors )
def clean(self, *args, **kwargs): super().clean(*args, **kwargs) errors = {} if not name_regex.match(self.name): errors['name'] = 'invalid' try: subnet_ip = StrToIp(self.subnet) ipv4 = IpIsV4(subnet_ip) except ValueError: ipv4 = None errors['subnet'] = 'Invalid Ip Address' if self.prefix is None or self.prefix < 1: errors['prefix'] = 'Min Prefix is 1' if errors: # no point in continuing raise ValidationError(errors) if ipv4 is not None: if ipv4: if self.prefix > 32: errors['prefix'] = 'Max Prefix for ipv4 is 32' else: if self.prefix > 128: errors['prefix'] = 'Max Prefix for ipv6 is 128' if self.gateway_offset is not None: (low, high) = CIDRNetworkBounds(subnet_ip, self.prefix, False, True) if low == high: errors[ 'gateway_offset'] = 'Gateway not possible in single host subnet' if self.gateway_offset < low or self.gateway_offset > high: errors[ 'gateway_offset'] = 'Must be greater than {0} and less than {1}'.format( low, high) if errors: # no point in continuing raise ValidationError(errors) (subnet_ip, last_ip) = CIDRNetworkBounds(subnet_ip, self.prefix, True) self.subnet = IpToStr(subnet_ip) self._max_address = IpToStr(last_ip) if self.pk is not None: ABobjects = AddressBlock.objects.filter(~Q(pk=self.pk), site=self.site) else: ABobjects = AddressBlock.objects.filter(site=self.site) block_count = ABobjects.filter(subnet__gte=self.subnet, _max_address__lte=self.subnet).count() block_count += ABobjects.filter( subnet__gte=self._max_address, _max_address__lte=self._max_address).count() block_count += ABobjects.filter( _max_address__gte=self.subnet, _max_address__lte=self._max_address).count() block_count += ABobjects.filter(subnet__gte=self.subnet, subnet__lte=self._max_address).count() if block_count > 0: errors[ 'subnet'] = 'This subnet/prefix overlaps with an existing Address Block in the same site' if errors: raise ValidationError(errors)