def get_serializers(self): # serializers eqpt_slz = get_app('api_equipment', module_label='v4.serializers') env_slz = get_app('api_environment', module_label='serializers') if not self.mapping: self.mapping = { 'environment': { 'obj': 'environment_id' }, 'environment__details': { 'serializer': env_slz.EnvironmentV3Serializer, 'kwargs': { 'kind': 'details' }, 'obj': 'environment' }, 'equipment': { 'obj': 'equipment_id' }, 'equipment__details': { 'serializer': eqpt_slz.EquipmentV4Serializer, 'kwargs': { 'kind': 'details' }, 'obj': 'equipment' } }
def get_serializers(self): # serializers eqpt_slz = get_app('api_equipment', module_label='v4.serializers') env_slz = get_app('api_environment', module_label='serializers') if not self.mapping: self.mapping = { 'environment': { 'obj': 'environment_id' }, 'environment__details': { 'serializer': env_slz.EnvironmentV3Serializer, 'kwargs': { 'kind': 'details' }, 'obj': 'environment' }, 'equipment': { 'obj': 'equipment_id' }, 'equipment__details': { 'serializer': eqpt_slz.EquipmentV4Serializer, 'kwargs': { 'kind': 'details' }, 'obj': 'equipment' } }
def get_serializers(self): # serializers eqpt_slz = get_app('api_equipment', module_label='v4.serializers') vi_slz = get_app('api_virtual_interface', module_label='v4.serializers') if not self.mapping: self.mapping = { 'equipment': { 'obj': 'equipamento_id' }, 'equipment__basic': { 'serializer': eqpt_slz.EquipmentV4Serializer, 'kwargs': { 'kind': 'basic', 'prohibited': ( 'ipsv4__basic', 'ipsv6__basic', ) }, 'obj': 'equipamento' }, 'equipment__details': { 'serializer': eqpt_slz.EquipmentV4Serializer, 'kwargs': { 'kind': 'details', 'prohibited': ( 'ipsv4__details', 'ipsv6__details', ) }, 'obj': 'equipamento' }, 'virtual_interface': { 'obj': 'virtual_interface_id' }, 'virtual_interface__basic': { 'serializer': vi_slz.VirtualInterfaceV4Serializer, 'kwargs': { 'kind': 'basic', 'prohibited': ( 'ipv4_equipment__basic', 'ipv6_equipment__basic', ) }, 'obj': 'virtual_interface' }, 'virtual_interface__details': { 'serializer': vi_slz.VirtualInterfaceV4Serializer, 'kwargs': { 'kind': 'details', 'prohibited': ( 'ipv4_equipment__details', 'ipv6_equipment__details', ) }, 'obj': 'virtual_interface' } }
def create_v3(self, vip_map, user): """Creates Vip Request.""" ip_models = get_app('ip', 'models') env_models = get_app('ambiente', 'models') reqvip_models = get_app('requisicaovips', 'models') ogp_models = get_app('api_ogp', 'models') self.validate_save(vip_map, permit_created=False) req = reqvip_models.RequisicaoVips() req.save() self.id = req.id self.name = vip_map.get('name') self.service = vip_map.get('service') self.business = vip_map.get('business') # Environment VIP self.environmentvip = env_models.EnvironmentVip\ .get_by_pk(vip_map.get('environmentvip')) # IPv4 if vip_map.get('ipv4'): self.ipv4 = ip_models.Ip.get_by_pk(vip_map.get('ipv4')) # IPv6 if vip_map.get('ipv6'): self.ipv6 = ip_models.Ipv6.get_by_pk(vip_map.get('ipv6')) self.save() # Options VIP option_create = [ int(vip_map['options'][key]) for key in vip_map['options'] ] self._create_option(option_create) # Ports for port in vip_map['ports']: pt = VipRequestPort() port['vip_request'] = self.id pt.create_v3(port) # Permissions perm = ogp_models.ObjectGroupPermission() perm.create_perms(vip_map, self.id, AdminPermission.OBJ_TYPE_VIP, user) # sync with old tables syncs.new_to_old(self)
def create_v3(self, vip_map, user): """Creates Vip Request.""" ip_models = get_app('ip', 'models') env_models = get_app('ambiente', 'models') reqvip_models = get_app('requisicaovips', 'models') ogp_models = get_app('api_ogp', 'models') self.validate_save(vip_map, permit_created=False) req = reqvip_models.RequisicaoVips() req.save() self.id = req.id self.name = vip_map.get('name') self.service = vip_map.get('service') self.business = vip_map.get('business') # Environment VIP self.environmentvip = env_models.EnvironmentVip\ .get_by_pk(vip_map.get('environmentvip')) # IPv4 if vip_map.get('ipv4'): self.ipv4 = ip_models.Ip.get_by_pk(vip_map.get('ipv4')) # IPv6 if vip_map.get('ipv6'): self.ipv6 = ip_models.Ipv6.get_by_pk(vip_map.get('ipv6')) self.save() # Options VIP option_create = [int(vip_map['options'][key]) for key in vip_map['options']] self._create_option(option_create) # Ports for port in vip_map['ports']: pt = VipRequestPort() port['vip_request'] = self.id pt.create_v3(port) # Permissions perm = ogp_models.ObjectGroupPermission() perm.create_perms(vip_map, self.id, AdminPermission.OBJ_TYPE_VIP, user) # sync with old tables syncs.new_to_old(self)
def get_serializers(self): """Returns the mapping of serializers.""" envvip_slz = get_app('api_environment_vip', module_label='serializers') vlan_slz = get_app('api_vlan', module_label='serializers') if not self.mapping: self.mapping = { 'environmentvip': { 'obj': 'ambient_vip_id' }, 'environmentvip__details': { 'serializer': envvip_slz.EnvironmentVipV3Serializer, 'kwargs': { }, 'obj': 'ambient_vip', 'eager_loading': self.setup_eager_loading_envvip }, 'vlan': { 'obj': 'vlan_id' }, 'vlan__basic': { 'serializer': vlan_slz.VlanV3Serializer, 'kwargs': { 'kind': 'basic' }, 'obj': 'vlan', 'eager_loading': self.setup_eager_loading_vlan }, 'vlan__details': { 'serializer': vlan_slz.VlanV3Serializer, 'kwargs': { }, 'obj': 'vlan', 'eager_loading': self.setup_eager_loading_vlan }, 'network_type': { 'obj': 'network_type_id' }, 'network_type__details': { 'serializer': NetworkTypeV3Serializer, 'kwargs': { }, 'obj': 'network_type', 'eager_loading': self.setup_eager_loading_net_type }, } return self.mapping
def get_serializers(self): """Returns the mapping of serializers.""" env_slz = get_app('api_environment', module_label='serializers') if not self.mapping: self.mapping = { 'environment': { 'obj': 'environment_id', }, 'environment_vip': { 'obj': 'environment_vip_id', }, 'environment__details': { 'serializer': env_slz.EnvironmentV3Serializer, 'kwargs': { 'kind': 'basic' }, 'obj': 'environment', }, 'environment_vip__details': { 'serializer': EnvironmentVipV3Serializer, 'kwargs': { 'kind': 'basic' }, 'obj': 'environment_vip', }, }
def get_serializers(self): routemap_slzs = get_app('api_route_map', module_label='v4.serializers') if not self.mapping: self.mapping = { 'route_map_entries': { 'obj': 'route_map_entries_id', }, 'route_map_entries__basic': { 'serializer': routemap_slzs.RouteMapEntryV4Serializer, 'kwargs': { 'kind': 'basic', 'many': True, }, 'obj': 'route_map_entries' }, 'route_map_entries__details': { 'serializer': routemap_slzs.RouteMapEntryV4Serializer, 'kwargs': { 'kind': 'details', 'many': True }, 'obj': 'route_map_entries' } }
def _create_option(self, options): """create options""" reqvip_models = get_app('requisicaovips', 'models') for option in options: opt = VipRequestOptionVip() opt_map = { 'vip_request': self.id, 'optionvip': option } opt.create_v3(opt_map) # DSCP try: dsrl3 = reqvip_models.OptionVip.objects.get( nome_opcao_txt='DSRL3', tipo_opcao='Retorno de trafego' ) except ObjectDoesNotExist: pass else: if dsrl3.id in options: vip_dscp = VipRequestDSCP() dscp_map = { 'vip_request': self.id, 'dscp': self.get_dscp(), } vip_dscp.create_v3(dscp_map)
def get_serializers(self): # serializers vi_slz = get_app('api_virtual_interface', module_label='v4.serializers') if not self.mapping: self.mapping = { 'virtual_interface': { 'obj': 'virtual_interface_id' }, 'virtual_interface__details': { 'serializer': vi_slz.VirtualInterfaceV4Serializer, 'kwargs': { 'kind': 'details' }, 'obj': 'virtual_interface', 'eager_loading': self.setup_eager_loading_interface }, 'virtual_interface__basic': { 'serializer': vi_slz.VirtualInterfaceV4Serializer, 'kwargs': { 'kind': 'basic' }, 'obj': 'virtual_interface', 'eager_loading': self.setup_eager_loading_interface }, }
def _create_option(self, options): """create options""" reqvip_models = get_app('requisicaovips', 'models') for option in options: opt = VipRequestOptionVip() opt_map = { 'vip_request': self.id, 'optionvip': option } opt.create_v3(opt_map) # DSCP try: dsrl3 = reqvip_models.OptionVip.objects.get( nome_opcao_txt='DSRL3', tipo_opcao='Retorno de trafego' ) except ObjectDoesNotExist: pass else: if dsrl3.id in options: vip_dscp = VipRequestDSCP() dscp_map = { 'vip_request': self.id, 'dscp': self.get_dscp(), } vip_dscp.create_v3(dscp_map)
class Meta: interface_model = get_app('interface', module_label='models') model = interface_model.Interface fields = ( 'id', 'interface', 'protected', 'description', 'equipment', 'description', 'native_vlan', 'type', 'channel', 'front_interface', 'back_interface', ) default_fields = fields basic_fields = ( 'id', 'interface', 'equipment', 'channel', ) details_fields = fields
def validate_network(envs, net_ip, version): """Verify if network make conflict in environment or environment related. """ models = get_app('ambiente', 'models') # Filter network_ipv4 where environment has config permiting to insert # current network. nets_envs = list() for env in envs: # get configs v4 of environment nts = [IPNetwork(config.ip_config.subnet) for config in env.configs.filter(ip_config__type=version)] # get networks that can be intersect with current network if verify_intersect(nts, net_ip)[0]: log.info('Environment %s has config(%s) permiting to insert ' 'in this network %s' % (env.name, nts, net_ip)) if version == models.IP_VERSION.IPv4[0]: for vlan in env.vlans: for network_ipv4 in vlan.networks_ipv4: nets_envs.append(IPNetwork(network_ipv4.networkv4)) else: for vlan in env.vlans: for network_ipv6 in vlan.networks_ipv6: nets_envs.append(IPNetwork(network_ipv6.networkv6)) if nets_envs: verify_networks(net_ip, nets_envs)
def get_serializers(self): """Returns the mapping of serializers.""" env_slz = get_app('api_environment', module_label='serializers') if not self.mapping: self.mapping = { 'environment': { 'obj': 'environment_id', }, 'environment_vip': { 'obj': 'environment_vip_id', }, 'environment__details': { 'serializer': env_slz.EnvironmentV3Serializer, 'kwargs': { 'kind': 'basic' }, 'obj': 'environment', }, 'environment_vip__details': { 'serializer': EnvironmentVipV3Serializer, 'kwargs': { 'kind': 'basic' }, 'obj': 'environment_vip', }, }
def validate_network(envs, net_ip, version): """Verify if network make conflict in environment or environment related. """ models = get_app('ambiente', 'models') cidr = models.EnvCIDR() # Filter network_ipv4 where environment has config permiting to insert # current network. nets_envs = list() for env in envs: # get configs v4 of environment nts = [IPNetwork(config.network) for config in cidr.get(env_id=env.id).filter(ip_version=version)] # get networks that can be intersect with current network if verify_intersect(nts, net_ip)[0]: log.info('Environment %s has config(%s) permiting to insert ' 'in this network %s' % (env.name, nts, net_ip)) if version == models.IP_VERSION.IPv4[0]: for vlan in env.vlans: for network_ipv4 in vlan.networks_ipv4: nets_envs.append(IPNetwork(network_ipv4.networkv4)) else: for vlan in env.vlans: for network_ipv6 in vlan.networks_ipv6: nets_envs.append(IPNetwork(network_ipv6.networkv6)) if nets_envs: verify_networks(net_ip, nets_envs)
def get_serializers(self): routemap_slzs = get_app('api_route_map', module_label='v4.serializers') if not self.mapping: self.mapping = { 'route_map_entries': { 'obj': 'route_map_entries_id', }, 'route_map_entries__basic': { 'serializer': routemap_slzs.RouteMapEntryV4Serializer, 'kwargs': { 'kind': 'basic', 'many': True, }, 'obj': 'route_map_entries' }, 'route_map_entries__details': { 'serializer': routemap_slzs.RouteMapEntryV4Serializer, 'kwargs': { 'kind': 'details', 'many': True }, 'obj': 'route_map_entries' } }
def get_serializers(self): """Returns the mapping of serializers.""" envvip_slz = get_app('api_environment_vip', module_label='serializers') vlan_slz = get_app('api_vlan', module_label='serializers') if not self.mapping: self.mapping = { 'environmentvip': { 'obj': 'ambient_vip_id' }, 'environmentvip__details': { 'serializer': envvip_slz.EnvironmentVipV3Serializer, 'kwargs': { }, 'obj': 'ambient_vip', 'eager_loading': self.setup_eager_loading_envvip }, 'vlan': { 'obj': 'vlan_id' }, 'vlan__basic': { 'serializer': vlan_slz.VlanV3Serializer, 'kwargs': { 'kind': 'basic' }, 'obj': 'vlan', 'eager_loading': self.setup_eager_loading_vlan }, 'vlan__details': { 'serializer': vlan_slz.VlanV3Serializer, 'kwargs': { }, 'obj': 'vlan', 'eager_loading': self.setup_eager_loading_vlan }, 'network_type': { 'obj': 'network_type_id' }, 'network_type__details': { 'serializer': NetworkTypeV3Serializer, 'kwargs': { }, 'obj': 'network_type', 'eager_loading': self.setup_eager_loading_net_type }, }
def get_serializers(self): # serializers eqpt_slz = get_app('api_equipment', module_label='v4.serializers') if not self.mapping: self.mapping = { 'ip': { 'obj': 'ip_id' }, 'ip__basic': { 'serializer': Ipv4V4Serializer, 'kwargs': { 'kind': 'basic', 'prohibited': ( 'equipments__basic', ) }, 'obj': 'ip' }, 'ip__details': { 'serializer': Ipv4V4Serializer, 'kwargs': { 'kind': 'details', 'prohibited': ( 'equipments__details', ) }, 'obj': 'ip' }, 'equipment': { 'obj': 'equipamento_id' }, 'equipment__basic': { 'serializer': eqpt_slz.EquipmentV4Serializer, 'kwargs': { 'kind': 'basic', 'prohibited': ( 'ipsv4__basic', 'ipsv6__basic', ) }, 'obj': 'equipamento' }, 'equipment__details': { 'serializer': eqpt_slz.EquipmentV4Serializer, 'kwargs': { 'kind': 'details', 'prohibited': ( 'ipsv4__details', 'ipsv6__details', ) }, 'obj': 'equipamento' }, }
def get_serializers(self): # serializers eqpt_slz = get_app('api_equipment', module_label='v4.serializers') if not self.mapping: self.mapping = { 'ip': { 'obj': 'ip_id' }, 'ip__basic': { 'serializer': IPv4V4Serializer, 'kwargs': { 'kind': 'basic', 'prohibited': ( 'equipments__basic', ) }, 'obj': 'ip' }, 'ip__details': { 'serializer': IPv4V4Serializer, 'kwargs': { 'kind': 'details', 'prohibited': ( 'equipments__details', ) }, 'obj': 'ip' }, 'equipment': { 'obj': 'equipamento_id' }, 'equipment__basic': { 'serializer': eqpt_slz.EquipmentV4Serializer, 'kwargs': { 'kind': 'basic', 'prohibited': ( 'ipsv4__basic', 'ipsv6__basic', ) }, 'obj': 'equipamento' }, 'equipment__details': { 'serializer': eqpt_slz.EquipmentV4Serializer, 'kwargs': { 'kind': 'details', 'prohibited': ( 'ipsv4__details', 'ipsv6__details', ) }, 'obj': 'equipamento' }, }
def create_v3(self, option_map): reqvip_models = get_app('requisicaovips', 'models') self.vip_request = VipRequest\ .get_by_pk(option_map.get('vip_request')) self.optionvip = reqvip_models.OptionVip\ .get_by_pk(option_map.get('optionvip')) self.save()
def create_v3(self, option_map): reqvip_models = get_app('requisicaovips', 'models') self.vip_request = VipRequest\ .get_by_pk(option_map.get('vip_request')) self.optionvip = reqvip_models.OptionVip\ .get_by_pk(option_map.get('optionvip')) self.save()
def get_serializers(self): pool_slz = get_app('api_pools', module_label='serializers.v3') envvip_slz = get_app('api_environment_vip', module_label='serializers') if not self.mapping: self.mapping = { 'server_pool': { 'obj': 'server_pool_id', }, 'server_pool__basic': { 'serializer': pool_slz.PoolV3Serializer, 'kwargs': { 'kind': 'basic', }, 'obj': 'server_pool' }, 'server_pool__details': { 'serializer': pool_slz.PoolV3Serializer, 'kwargs': { 'kind': 'details', 'exclude': ( 'vips', 'vips__details', ) }, 'obj': 'server_pool' }, 'l7_rule': { 'kwargs': { }, 'obj': 'optionvip_id' }, 'l7_rule__details': { 'serializer': envvip_slz.OptionVipV3Serializer, 'kwargs': { 'kind': 'details' }, 'obj': 'l7_rule', }, }
def get_serializers(self): pool_slz = get_app('api_pools', module_label='serializers.v3') envvip_slz = get_app('api_environment_vip', module_label='serializers') if not self.mapping: self.mapping = { 'server_pool': { 'obj': 'server_pool_id', }, 'server_pool__basic': { 'serializer': pool_slz.PoolV3Serializer, 'kwargs': { 'kind': 'basic', }, 'obj': 'server_pool' }, 'server_pool__details': { 'serializer': pool_slz.PoolV3Serializer, 'kwargs': { 'kind': 'details', 'exclude': ( 'vips', 'vips__details', ) }, 'obj': 'server_pool' }, 'l7_rule': { 'kwargs': {}, 'obj': 'optionvip_id' }, 'l7_rule__details': { 'serializer': envvip_slz.OptionVipV3Serializer, 'kwargs': { 'kind': 'details' }, 'obj': 'l7_rule', }, } return self.mapping
def update_v3(self, pool_map): reqvip_models = get_app('requisicaovips', 'models') self.server_pool = reqvip_models.ServerPool\ .get_by_pk(pool_map.get('server_pool')) self.optionvip = reqvip_models.OptionVip\ .get_by_pk(pool_map.get('optionvip')) self.val_optionvip = pool_map.get('val_optionvip') self.order = pool_map.get('order') self.save()
def update_v3(self, pool_map): reqvip_models = get_app('requisicaovips', 'models') self.server_pool = reqvip_models.ServerPool\ .get_by_pk(pool_map.get('server_pool')) self.optionvip = reqvip_models.OptionVip\ .get_by_pk(pool_map.get('optionvip')) self.val_optionvip = pool_map.get('val_optionvip') self.order = pool_map.get('order') self.save()
def get_serializers(self): lcb_slzs = get_app('api_list_config_bgp', module_label='v4.serializers') if not self.mapping: self.mapping = { 'list_config_bgp': { 'obj': 'list_config_bgp_id', }, 'list_config_bgp__basic': { 'serializer': lcb_slzs.ListConfigBGPV4Serializer, 'kwargs': { 'kind': 'basic', 'prohibited': ( 'route_map_entries__basic', ) }, 'obj': 'list_config_bgp' }, 'list_config_bgp__details': { 'serializer': lcb_slzs.ListConfigBGPV4Serializer, 'kwargs': { 'kind': 'details', 'prohibited': ( 'route_map_entries__details', ) }, 'obj': 'list_config_bgp' }, 'route_map': { 'obj': 'route_map_id', }, 'route_map__basic': { 'serializer': RouteMapV4Serializer, 'kwargs': { 'kind': 'basic', 'prohibited': ( 'route_map_entries__basic', ) }, 'obj': 'route_map' }, 'route_map__details': { 'serializer': RouteMapV4Serializer, 'kwargs': { 'kind': 'details', 'prohibited': ( 'route_map_entries__details', ) }, 'obj': 'route_map' } }
def delete_v3(self, bypass_ipv4=False, bypass_ipv6=False, sync=True): """Delete Vip Request. @raise VipConstraintCreated: Vip request can not be deleted because it is created in equipment. """ ip_models = get_app('ip') ogp_models = get_app('api_ogp', 'models') id_vip = self.id id_ipv4 = self.ipv4 id_ipv6 = self.ipv6 if self.created: raise exceptions.VipConstraintCreated(id_vip) self._delete_pools_related() self.delete() # Deletes Permissions ogp_models.ObjectGroupPermission.objects.filter( object_type__name=AdminPermission.OBJ_TYPE_VIP, object_value=id_vip ).delete() # delete Ipv4 if self.ipv4 and bypass_ipv4 is False: if not self._is_ipv4_in_use(id_ipv4, id_vip): try: self.ipv4.delete_v3() except ip_models.IpCantBeRemovedFromVip: self.log.info( 'Tried to delete Ipv4, because assoc with in more Vips.') pass except Exception, e: self.log.error(e) raise Exception('Error to delete Ipv4: %s.', e)
def delete_v3(self, bypass_ipv4=False, bypass_ipv6=False, sync=True): """Delete Vip Request. @raise VipConstraintCreated: Vip request can not be deleted because it is created in equipment. """ ip_models = get_app('ip') ogp_models = get_app('api_ogp', 'models') id_vip = self.id id_ipv4 = self.ipv4 id_ipv6 = self.ipv6 if self.created: raise exceptions.VipConstraintCreated(id_vip) self._delete_pools_related() self.delete() # Deletes Permissions ogp_models.ObjectGroupPermission.objects.filter( object_type__name=AdminPermission.OBJ_TYPE_VIP, object_value=id_vip ).delete() # delete Ipv4 if self.ipv4 and bypass_ipv4 is False: if not self._is_ipv4_in_use(id_ipv4, id_vip): try: self.ipv4.delete_v3() except ip_models.IpCantBeRemovedFromVip: self.log.info( 'Tried to delete Ipv4, because assoc with in more Vips.') pass except Exception, e: self.log.error(e) raise Exception('Error to delete Ipv4: %s.', e)
def get_serializers(self): # serializers as_slz = get_app('api_as', module_label='v4.serializers') eqpt_slz = get_app('api_equipment', module_label='v4.serializers') if not self.mapping: self.mapping = { 'id_as': { 'obj': 'id_as_id' }, 'id_as__details': { 'serializer': as_slz.AsV4Serializer, 'kwargs': { }, 'obj': 'id_as' }, 'equipment': { 'obj': 'equipment_id' }, 'equipment__basic': { 'serializer': eqpt_slz.EquipmentV4Serializer, 'kwargs': { 'kind': 'basic' }, 'obj': 'equipment' }, 'equipment__details': { 'serializer': eqpt_slz.EquipmentV4Serializer, 'kwargs': { 'kind': 'details' }, 'obj': 'equipment' } }
def get_serializers(self): # serializers asn_slz = get_app('api_asn', module_label='v4.serializers') eqpt_slz = get_app('api_equipment', module_label='v4.serializers') if not self.mapping: self.mapping = { 'asn': { 'obj': 'asn_id' }, 'asn__details': { 'serializer': asn_slz.AsnV4Serializer, 'kwargs': { }, 'obj': 'asn' }, 'equipment': { 'obj': 'equipment_id' }, 'equipment__basic': { 'serializer': eqpt_slz.EquipmentV4Serializer, 'kwargs': { 'kind': 'basic' }, 'obj': 'equipment' }, 'equipment__details': { 'serializer': eqpt_slz.EquipmentV4Serializer, 'kwargs': { 'kind': 'details' }, 'obj': 'equipment' } }
class Meta: vlan_model = get_app('vlan', module_label='models') model = vlan_model.Vlan fields = ( 'id', 'name', 'num_vlan', 'vxlan', 'environment', 'description', 'acl_file_name', 'acl_valida', 'acl_file_name_v6', 'acl_valida_v6', 'active', 'vrf', 'acl_draft', 'acl_draft_v6', 'networks_ipv4', 'networks_ipv6', 'vrfs', 'groups_permissions', ) default_fields = ( 'id', 'name', 'num_vlan', 'vxlan', 'environment', 'description', 'acl_file_name', 'acl_valida', 'acl_file_name_v6', 'acl_valida_v6', 'active', 'vrf', 'acl_draft', 'acl_draft_v6', ) basic_fields = ( 'id', 'name', 'num_vlan', 'vxlan' ) details_fields = default_fields
def create_perms(self, obj_map, object_value, object_type, user): usr_facade = get_app('api_usuario', 'facade') usr_models = get_app('usuario', 'models') groups_perm = obj_map.get('groups_permissions', []) groups_perm += usr_facade.get_groups( obj_map.get('users_permissions', [])) groups_perm = usr_facade.reduce_groups(groups_perm) if groups_perm: for group_perm in groups_perm: perm = { 'object_type': object_type, 'user_group': group_perm['user_group'], 'object_value': object_value, 'read': group_perm['read'], 'write': group_perm['write'], 'delete': group_perm['delete'], 'change_config': group_perm['change_config'], } ogp = ObjectGroupPermission() ogp.create_v3(perm) else: for group in usr_models.UsuarioGrupo.list_by_user_id(user.id): perm = { 'object_type': object_type, 'user_group': group.ugrupo_id, 'object_value': object_value, 'read': True, 'write': True, 'delete': True, 'change_config': True, } ogp = ObjectGroupPermission() ogp.create_v3(perm)
def create_v3(self, perm): group_models = get_app('grupo', 'models') self.user_group = group_models.UGrupo.get_by_pk(perm.get('user_group')) if isinstance(perm.get('object_type'), int): self.object_type = ObjectType.get_by_pk(perm.get('object_type')) elif isinstance(perm.get('object_type'), basestring): self.object_type = ObjectType.get_by_name(perm.get('object_type')) self.read = perm.get('read') self.write = perm.get('write') self.change_config = perm.get('change_config') self.delete = perm.get('delete') self.save()
def create_perms(self, obj_map, object_value, object_type, user): usr_facade = get_app('api_usuario', 'facade') usr_models = get_app('usuario', 'models') groups_perm = obj_map.get('groups_permissions', []) groups_perm += usr_facade.get_groups( obj_map.get('users_permissions', [])) groups_perm = usr_facade.reduce_groups(groups_perm) if groups_perm: for group_perm in groups_perm: perm = { 'object_type': object_type, 'user_group': group_perm['user_group'], 'object_value': object_value, 'read': group_perm['read'], 'write': group_perm['write'], 'delete': group_perm['delete'], 'change_config': group_perm['change_config'], } ogp = ObjectGroupPermission() ogp.create_v3(perm) else: for group in usr_models.UsuarioGrupo.list_by_user_id(user.id): perm = { 'object_type': object_type, 'user_group': group.ugrupo_id, 'object_value': object_value, 'read': True, 'write': True, 'delete': True, 'change_config': True, } ogp = ObjectGroupPermission() ogp.create_v3(perm)
def create_v3(self, perm): group_models = get_app('grupo', 'models') self.user_group = group_models.UGrupo.get_by_pk(perm.get('user_group')) if isinstance(perm.get('object_type'), int): self.object_type = ObjectType.get_by_pk(perm.get('object_type')) elif isinstance(perm.get('object_type'), basestring): self.object_type = ObjectType.get_by_name(perm.get('object_type')) self.read = perm.get('read') self.write = perm.get('write') self.change_config = perm.get('change_config') self.delete = perm.get('delete') self.save()
def get_serializers(self): """Returns the mapping of serializers.""" environment_serializers = get_app('api_environment', module_label='serializers') if not self.mapping: self.mapping = { 'range_vlans': { 'obj': 'vlans' }, 'interface': { 'obj': 'interface_id' }, 'interface__basic': { 'serializer': InterfaceV3Serializer, 'kwargs': { 'kind': 'basic' }, 'obj': 'interface', }, 'interface__details': { 'serializer': InterfaceV3Serializer, 'kwargs': { 'kind': 'details', }, 'obj': 'interface' }, 'environment': { 'obj': 'ambiente_id' }, 'environment__basic': { 'serializer': environment_serializers.EnvironmentV3Serializer, 'kwargs': { 'kind': 'basic' }, 'obj': 'ambiente', }, 'environment__details': { 'serializer': environment_serializers.EnvironmentV3Serializer, 'kwargs': { 'kind': 'details' }, 'obj': 'ambiente', }, }
class Meta: filter_model = get_app('filter', module_label='models') model = filter_model.Filter fields = ( 'id', 'name', 'description', ) default_fields = ( 'id', 'name', 'description', ) details_fields = fields
def create_v3(self, vip_port_map): # save port facade_eqpt = get_app('api_equipment', 'facade') self.vip_request = VipRequest.get_by_pk( vip_port_map.get('vip_request')) self.port = vip_port_map.get('port') eqpts = facade_eqpt.get_eqpt_by_envvip( self.vip_request.environmentvip.id) if eqpts: plugin = PluginFactory.factory(eqpts[0]) identifier = plugin.get_name_eqpt( self.vip_request, vip_port_map['port']) self.identifier = identifier self.save() # L4 Protocol opt = VipRequestPortOptionVip() opt_map = { 'vip_request_port': self.id, 'optionvip': vip_port_map['options']['l4_protocol'] } opt.create_v3(opt_map) # L7 Protocol opt = VipRequestPortOptionVip() opt_map = { 'vip_request_port': self.id, 'optionvip': vip_port_map['options']['l7_protocol'] } opt.create_v3(opt_map) # Pools for pool in vip_port_map.get('pools'): pool_map = { 'vip_request_port': self.id, 'server_pool': pool.get('server_pool'), 'optionvip': pool.get('l7_rule'), 'val_optionvip': pool.get('l7_value'), 'order': pool.get('order') } pl = VipRequestPortPool() pl.create_v3(pool_map)
def get_serializers(self): # serializers group_slz = get_app('api_group', module_label='serializers') if not self.mapping: self.mapping = { 'group': { 'obj': 'user_group_id', }, 'group__details': { 'serializer': group_slz.UserGroupV3Serializer, 'kwargs': {}, 'obj': 'user_group', }, } return self.mapping
def _delete_option(self, options): """Deletes options""" reqvip_models = get_app('requisicaovips', 'models') VipRequestOptionVip.objects.filter(vip_request=self.id, optionvip__in=options).delete() # DSCP try: dsrl3 = reqvip_models.OptionVip.objects.get( nome_opcao_txt='DSRL3', tipo_opcao='Retorno de trafego') except ObjectDoesNotExist: pass else: if dsrl3.id in options: VipRequestDSCP.objects.filter(vip_request=self.id).delete()
def create_v3(self, vip_port_map): # save port facade_eqpt = get_app('api_equipment', 'facade') self.vip_request = VipRequest.get_by_pk( vip_port_map.get('vip_request')) self.port = vip_port_map.get('port') eqpts = facade_eqpt.get_eqpt_by_envvip( self.vip_request.environmentvip.id) if eqpts: plugin = PluginFactory.factory(eqpts[0]) identifier = plugin.get_name_eqpt( self.vip_request, vip_port_map['port']) self.identifier = identifier self.save() # L4 Protocol opt = VipRequestPortOptionVip() opt_map = { 'vip_request_port': self.id, 'optionvip': vip_port_map['options']['l4_protocol'] } opt.create_v3(opt_map) # L7 Protocol opt = VipRequestPortOptionVip() opt_map = { 'vip_request_port': self.id, 'optionvip': vip_port_map['options']['l7_protocol'] } opt.create_v3(opt_map) # Pools for pool in vip_port_map.get('pools'): pool_map = { 'vip_request_port': self.id, 'server_pool': pool.get('server_pool'), 'optionvip': pool.get('l7_rule'), 'val_optionvip': pool.get('l7_value'), 'order': pool.get('order') } pl = VipRequestPortPool() pl.create_v3(pool_map)
def get_serializers(self): """Returns the mapping of serializers.""" environment_serializers = get_app('api_environment', module_label='serializers') if not self.mapping: self.mapping = { 'range_vlans': { 'obj': 'vlans' }, 'interface': { 'obj': 'interface_id' }, 'interface__basic': { 'serializer': InterfaceV3Serializer, 'kwargs': { 'kind': 'basic' }, 'obj': 'interface', }, 'interface__details': { 'serializer': InterfaceV3Serializer, 'kwargs': { 'kind': 'details', }, 'obj': 'interface' }, 'environment': { 'obj': 'ambiente_id' }, 'environment__basic': { 'serializer': environment_serializers.EnvironmentV3Serializer, 'kwargs': { 'kind': 'basic' }, 'obj': 'ambiente', }, 'environment__details': { 'serializer': environment_serializers.EnvironmentV3Serializer, 'kwargs': { 'kind': 'details' }, 'obj': 'ambiente', }, }
def get_serializers(self): lcb_slzs = get_app('api_list_config_bgp', module_label='v4.serializers') if not self.mapping: self.mapping = { 'list_config_bgp': { 'obj': 'list_config_bgp_id', }, 'list_config_bgp__basic': { 'serializer': lcb_slzs.ListConfigBGPV4Serializer, 'kwargs': { 'kind': 'basic', 'prohibited': ('route_map_entries__basic', ) }, 'obj': 'list_config_bgp' }, 'list_config_bgp__details': { 'serializer': lcb_slzs.ListConfigBGPV4Serializer, 'kwargs': { 'kind': 'details', 'prohibited': ('route_map_entries__details', ) }, 'obj': 'list_config_bgp' }, 'route_map': { 'obj': 'route_map_id', }, 'route_map__basic': { 'serializer': RouteMapV4Serializer, 'kwargs': { 'kind': 'basic', 'prohibited': ('route_map_entries__basic', ) }, 'obj': 'route_map' }, 'route_map__details': { 'serializer': RouteMapV4Serializer, 'kwargs': { 'kind': 'details', 'prohibited': ('route_map_entries__details', ) }, 'obj': 'route_map' } }
def _delete_pools_related(self): ogp_models = get_app('api_ogp', 'models') # Pools related with vip and was not created pools = self.get_pool_related(self.id).filter(pool_created=False) # Pools assoc with others Vips pools_assoc = pools.exclude( viprequestportpool__vip_request_port__vip_request__id=self.id) # Remove pool not created and not assoc with others vips for pool in pools: if pool not in pools_assoc: pool_id = pool.id pool.delete() # Deletes Permissions ogp_models.ObjectGroupPermission.objects.filter( object_type__name=AdminPermission.OBJ_TYPE_POOL, object_value=pool_id).delete() log.info("Deletes Pool Permissions")
def get_serializers(self): envvip_slz = get_app('api_environment_vip', module_label='serializers') if not self.mapping: self.mapping = { 'pools': { 'serializer': VipRequestPortPoolV3Serializer, 'kwargs': { 'many': True }, 'obj': 'pools', }, 'pools__details': { 'serializer': VipRequestPortPoolV3Serializer, 'kwargs': { 'many': True, 'kind': 'details' }, 'obj': 'pools' }, 'options': { 'keys': ( 'l4_protocol', 'l7_protocol', ), 'kwargs': { }, 'obj': 'optionvip_id' }, 'options__details': { 'keys': ( 'l4_protocol', 'l7_protocol', ), 'serializer': envvip_slz.OptionVipV3Serializer, 'kwargs': { 'kind': 'details' }, 'obj': 'optionvip', }, }
def get_serializers(self): envvip_slz = get_app('api_environment_vip', module_label='serializers') if not self.mapping: self.mapping = { 'pools': { 'serializer': VipRequestPortPoolV3Serializer, 'kwargs': { 'many': True }, 'obj': 'pools', }, 'pools__details': { 'serializer': VipRequestPortPoolV3Serializer, 'kwargs': { 'many': True, 'kind': 'details' }, 'obj': 'pools' }, 'options': { 'keys': ( 'l4_protocol', 'l7_protocol', ), 'kwargs': {}, 'obj': 'optionvip_id' }, 'options__details': { 'keys': ( 'l4_protocol', 'l7_protocol', ), 'serializer': envvip_slz.OptionVipV3Serializer, 'kwargs': { 'kind': 'details' }, 'obj': 'optionvip', }, } return self.mapping
def validate_vlan_conflict(equips, num_vlan, exclude=None): """Verify if num vlan make conflict in environment or environment related. """ models = get_app('vlan', 'models') # get vlans with same num_vlan vlans = models.Vlan.objects.filter( ambiente__equipamentoambiente__equipamento__in=equips, num_vlan=num_vlan) if exclude: vlans = vlans.exclude(id=exclude) if vlans: ids_env = [vlan.ambiente.name for vlan in vlans] msg = 'There is a registered VLAN with the number in ' \ 'equipments of environments: {}'.format(ids_env) log.error(msg) raise models.VlanErrorV3(msg)
def _delete_option(self, options): """Deletes options""" reqvip_models = get_app('requisicaovips', 'models') VipRequestOptionVip.objects.filter( vip_request=self.id, optionvip__in=options ).delete() # DSCP try: dsrl3 = reqvip_models.OptionVip.objects.get( nome_opcao_txt='DSRL3', tipo_opcao='Retorno de trafego' ) except ObjectDoesNotExist: pass else: if dsrl3.id in options: VipRequestDSCP.objects.filter(vip_request=self.id).delete()
def get_dscp(self): reqvip_models = get_app('requisicaovips', 'models') members = reqvip_models.ServerPoolMember.objects.filter( server_pool__viprequestportpool__vip_request_port__vip_request__id=self.id) eqpts = [member.equipment.id for member in members] members = VipRequestDSCP.objects.filter( vip_request__viprequestport__viprequestportpool__server_pool__serverpoolmember__in=reqvip_models.ServerPoolMember.objects.filter( ip__ipequipamento__equipamento__in=eqpts ) ).distinct().values('dscp') mb = [i.get('dscp') for i in members] perm = range(3, 64) perm_new = list(set(perm) - set(mb)) if perm_new: return perm_new[0] else: raise Exception( 'Can\'t use pool because pool members have dscp is sold out')
def get_dscp(self): reqvip_models = get_app('requisicaovips', 'models') members = reqvip_models.ServerPoolMember.objects.filter( server_pool__viprequestportpool__vip_request_port__vip_request__id=self.id) eqpts = [member.equipment.id for member in members] members = VipRequestDSCP.objects.filter( vip_request__viprequestport__viprequestportpool__server_pool__serverpoolmember__in=reqvip_models.ServerPoolMember.objects.filter( ip__ipequipamento__equipamento__in=eqpts ) ).distinct().values('dscp') mb = [i.get('dscp') for i in members] perm = range(3, 64) perm_new = list(set(perm) - set(mb)) if perm_new: return perm_new[0] else: raise Exception( 'Can\'t use pool because pool members have dscp is sold out')
def get_serializers(self): env_slzs = get_app('api_environment', module_label='serializers') if not self.mapping: self.mapping = { 'environment': { 'obj': 'environment_id', }, 'environment__basic': { 'serializer': env_slzs.EnvironmentV3Serializer, 'kwargs': { 'kind': 'basic' }, 'obj': 'environment' }, 'environment__details': { 'serializer': env_slzs.EnvironmentV3Serializer, 'kwargs': { 'kind': 'details' }, 'obj': 'environment' }, 'peer_group': { 'obj': 'peer_group_id', }, 'peer_group__basic': { 'serializer': PeerGroupV4Serializer, 'kwargs': { 'kind': 'basic' }, 'obj': 'peer_group' }, 'peer_group__details': { 'serializer': PeerGroupV4Serializer, 'kwargs': { 'kind': 'details' }, 'obj': 'peer_group' } }
def get_serializers(self): env_slzs = get_app('api_environment', module_label='serializers') if not self.mapping: self.mapping = { 'environment': { 'obj': 'environment_id', }, 'environment__basic': { 'serializer': env_slzs.EnvironmentV3Serializer, 'kwargs': { 'kind': 'basic' }, 'obj': 'environment' }, 'environment__details': { 'serializer': env_slzs.EnvironmentV3Serializer, 'kwargs': { 'kind': 'details' }, 'obj': 'environment' }, 'peer_group': { 'obj': 'peer_group_id', }, 'peer_group__basic': { 'serializer': PeerGroupV4Serializer, 'kwargs': { 'kind': 'basic' }, 'obj': 'peer_group' }, 'peer_group__details': { 'serializer': PeerGroupV4Serializer, 'kwargs': { 'kind': 'details' }, 'obj': 'peer_group' } }
def _delete_pools_related(self): ogp_models = get_app('api_ogp', 'models') # Pools related with vip and was not created pools = self.get_pool_related( self.id ).filter(pool_created=False) # Pools assoc with others Vips pools_assoc = pools.exclude( viprequestportpool__vip_request_port__vip_request__id=self.id ) # Remove pool not created and not assoc with others vips for pool in pools: if pool not in pools_assoc: pool_id = pool.id pool.delete() # Deletes Permissions ogp_models.ObjectGroupPermission.objects.filter( object_type__name=AdminPermission.OBJ_TYPE_POOL, object_value=pool_id ).delete() log.info("Deletes Pool Permissions")
def validate_vlan_conflict(equips, num_vlan, exclude=None): """Verify if num vlan make conflict in environment or environment related. """ models = get_app('vlan', 'models') # get vlans with same num_vlan vlans = models.Vlan.objects.filter( ambiente__equipamentoambiente__equipamento__in=equips, num_vlan=num_vlan ) if exclude: vlans = vlans.exclude( id=exclude ) if vlans: ids_env = [vlan.ambiente.name for vlan in vlans] msg = 'There is a registered VLAN with the number in ' \ 'equipments of environments: {}'.format(ids_env) log.error(msg) raise models.VlanErrorV3(msg)
def get_networks_related(vrfs, eqpts, has_netv4=True, has_netv6=True, exclude=None): models = get_app('vlan', 'models') vlans_env_eqpt = models.Vlan.objects.filter( # get vlans of environment or environment assoc ambiente__equipamentoambiente__equipamento__in=eqpts ).filter( # get vlans with customized vrfs Q(vrfvlanequipment__vrf__in=vrfs) | # get vlans using vrf of environment Q(ambiente__default_vrf__in=vrfs) ).distinct() if exclude: vlans_env_eqpt = vlans_env_eqpt.exclude( # exclude current vlan id=exclude ) vlans_env_eqpt = vlans_env_eqpt.distinct() netv4 = list() if has_netv4: netv4 = reduce(list.__add__, [ list(vlan_env.networkipv4_set.all()) for vlan_env in vlans_env_eqpt if vlan_env.networkipv4_set.all()], []) netv6 = list() if has_netv6: netv6 = reduce(list.__add__, [ list(vlan_env.networkipv6_set.all()) for vlan_env in vlans_env_eqpt if vlan_env.networkipv6_set.all()], []) return netv4, netv6
from networkapi.api_vip_request.models import VipRequest from networkapi.api_vip_request.models import VipRequestDSCP from networkapi.equipamento.models import Equipamento from networkapi.equipamento.models import EquipamentoAcesso from networkapi.infrastructure.datatable import build_query_to_datatable_v3 from networkapi.ip.models import Ip from networkapi.ip.models import Ipv6 from networkapi.plugins.factory import PluginFactory from networkapi.requisicaovips.models import OptionVip from networkapi.requisicaovips.models import ServerPool from networkapi.util import valid_expression from networkapi.util.geral import get_app # serializers pool_slz = get_app('api_pools', module_label='serializers.v3') vip_slz = get_app('api_vip_request', module_label='serializers.v3') log = logging.getLogger(__name__) def get_vip_request_by_ip(ipv4=None, ipv6=None, environment_vip=None): """ Get Vip Request by Ipv4, Ipv6, Environment Vip :param ip: Id of Ipv4 :param ipv6: Id of Ipv6 :param environment_vip: Id of Environment Vip """ vip_request = VipRequest.objects.all()
def get_serializers(self): eqptv3_slzs = get_app('api_equipment', module_label='serializers') v4_ip_slz = get_app('api_ip', module_label='v4.serializers') grp_slz = get_app('api_group', module_label='serializers') asn_slz = get_app('api_asn', module_label='v4.serializers') if not self.mapping: self.mapping = { 'model': { 'obj': 'modelo_id' }, 'model__details': { 'serializer': eqptv3_slzs.ModelV3Serializer, 'kwargs': { }, 'obj': 'modelo' }, 'equipment_type': { 'obj': 'tipo_equipamento_id' }, 'equipment_type__details': { 'serializer': eqptv3_slzs.EquipmentTypeV3Serializer, 'kwargs': { }, 'obj': 'tipo_equipamento' }, 'ipsv4': { 'serializer': v4_ip_slz. IPv4EquipmentV4Serializer, 'kwargs': { 'many': True, 'prohibited': ( 'equipment', ) }, 'obj': 'ipv4_equipment' }, 'ipsv4__basic': { 'serializer': v4_ip_slz. IPv4EquipmentV4Serializer, 'kwargs': { 'many': True, 'kind': 'basic', 'prohibited': ( 'equipment__basic', ) }, 'obj': 'ipv4_equipment', }, 'ipsv4__details': { 'serializer': v4_ip_slz. IPv4EquipmentV4Serializer, 'kwargs': { 'many': True, 'kind': 'details', 'prohibited': ( 'equipment__details', ) }, 'obj': 'ipv4_equipment', }, 'ipsv6': { 'serializer': v4_ip_slz. IPv6EquipmentV4Serializer, 'kwargs': { 'many': True, 'prohibited': ( 'equipment', ) }, 'obj': 'ipv6_equipment' }, 'ipsv6__basic': { 'serializer': v4_ip_slz. IPv6EquipmentV4Serializer, 'kwargs': { 'many': True, 'kind': 'basic', 'prohibited': ( 'equipment__basic', ), }, 'obj': 'ipv6_equipment', }, 'ipsv6__details': { 'serializer': v4_ip_slz. IPv6EquipmentV4Serializer, 'kwargs': { 'many': True, 'kind': 'details', 'prohibited': ( 'equipment__details', ), }, 'obj': 'ipv6_equipment', }, 'groups': { 'serializer': grp_slz.EquipmentGroupV3Serializer, 'kwargs': { 'many': True, 'fields': ( 'id', ) }, 'obj': 'groups' }, 'groups__details': { 'serializer': grp_slz.EquipmentGroupV3Serializer, 'kwargs': { 'many': True, }, 'obj': 'groups' }, 'environments': { 'serializer': eqptv3_slzs. EquipmentEnvironmentV3Serializer, 'kwargs': { 'many': True, 'fields': ( 'is_router', 'environment', ) }, 'obj': 'environments' }, 'environments__details': { 'serializer': eqptv3_slzs. EquipmentEnvironmentV3Serializer, 'kwargs': { 'many': True, 'fields': ( 'is_router', 'environment__details', ), }, 'obj': 'environments' }, 'sdn_controlled_environment': { 'serializer': EquipmentControllerEnvironmentV4Serializer, 'kwargs': { 'many': True, 'fields': ( 'environment', ) }, 'obj': 'equipment_controller_environment' }, 'sdn_controlled_environment__details': { 'serializer': EquipmentControllerEnvironmentV4Serializer, 'kwargs': { 'many': True, 'fields': ( 'environment__details', ), }, 'obj': 'equipment_controller_environment' }, 'asn': { 'obj': 'asn_id' }, 'asn__basic': { 'serializer': asn_slz.AsnV4Serializer, 'kwargs': { }, 'obj': 'asn' }, 'asn__details': { 'serializer': asn_slz.AsnV4Serializer, 'kwargs': { }, 'obj': 'asn' } }
def get_serializers(self): envvip_slz = get_app('api_environment_vip', module_label='serializers') ip_slz = get_app('api_ip', module_label='serializers') eqpt_slz = get_app('api_equipment', module_label='serializers') ogp_slz = get_app('api_ogp', module_label='serializers') if not self.mapping: self.mapping = { 'environmentvip': { 'obj': 'environmentvip_id' }, 'environmentvip__details': { 'serializer': envvip_slz.EnvironmentVipV3Serializer, 'kwargs': { 'fields': ( 'id', 'finalidade_txt', 'cliente_txt', 'ambiente_p44_txt', 'description', ) }, 'obj': 'environmentvip', 'eager_loading': self.setup_eager_loading_environmentvip }, 'ipv4': { 'obj': 'ipv4_id' }, 'ipv4__details': { 'serializer': ip_slz.Ipv4V3Serializer, 'kwargs': { 'fields': ( 'id', 'ip_formated', 'description', ) }, 'obj': 'ipv4', 'eager_loading': self.setup_eager_loading_ipv4 }, 'ipv6': { 'obj': 'ipv6_id' }, 'ipv6__details': { 'serializer': ip_slz.Ipv6V3Serializer, 'kwargs': { 'fields': ( 'id', 'ip_formated', 'description', ) }, 'obj': 'ipv6', 'eager_loading': self.setup_eager_loading_ipv6 }, 'ports': { 'serializer': VipRequestPortV3Serializer, 'kwargs': { 'many': True }, 'obj': 'ports', }, 'ports__details': { 'serializer': VipRequestPortV3Serializer, 'kwargs': { 'many': True, 'kind': 'details' }, 'obj': 'ports' }, 'groups_permissions': { 'serializer': ogp_slz.ObjectGroupPermissionV3Serializer, 'kwargs': { 'many': True, 'fields': ( 'user_group', 'read', 'write', 'change_config', 'delete', ) }, 'obj': 'groups_permissions', }, 'groups_permissions__details': { 'serializer': ogp_slz.ObjectGroupPermissionV3Serializer, 'kwargs': { 'include': ( 'user_group__details', ), 'many': True, }, 'obj': 'groups_permissions', }, 'options': { 'keys': ( 'cache_group', 'persistence', 'timeout', 'traffic_return', ), 'kwargs': { }, 'obj': 'optionvip_id' }, 'options__details': { 'keys': ( 'cache_group', 'persistence', 'timeout', 'traffic_return', ), 'serializer': envvip_slz.OptionVipV3Serializer, 'kwargs': { 'kind': 'details' }, 'obj': 'optionvip', }, 'equipments': { 'serializer': eqpt_slz.EquipmentV3Serializer, 'kwargs': { 'many': True, 'fields': { 'id' } }, 'obj': 'equipments', }, 'equipments__basic': { 'serializer': eqpt_slz.EquipmentV3Serializer, 'kwargs': { 'many': True, }, 'obj': 'equipments', }, 'equipments__details': { 'serializer': eqpt_slz.EquipmentV3Serializer, 'kwargs': { 'many': True, 'kind': 'details', 'fields': ( 'id', 'name', 'maintenance', 'equipment_type', 'model', ) }, 'obj': 'equipments', } }
def validate_conflict_join_envs(env_ip, equipments): models_env = get_app('ambiente', 'models') models_vrf = get_app('api_vrf', 'models') nums_vlan_rel_ip = [vlan.num_vlan for vlan in env_ip.vlans] for equipment in equipments: # Equipment without environment related, do not need validate # Validate if equipment is not in related in environment if equipment.id not in list(env_ip.eqpts): # Validate if equipment has environments related for env_rel in equipment.environments: env_rel_eqpt = env_rel.ambiente use_filter = True if env_rel_eqpt.filter != env_ip.filter: use_filter = False # Exists differents filters, so is need to validate # all equipments eqpts = env_rel_eqpt.filtered_eqpts \ if use_filter else env_rel_eqpt.eqpts eqpts_env_ip = env_ip.filtered_eqpts \ if use_filter else env_ip.eqpts # Verify if vlans of environment of IP make conflict in # new relationship nums_vlan_rel_eqpt = [vlan.num_vlan for vlan in env_rel_eqpt.vlans] vlans_conflict = list( set(nums_vlan_rel_eqpt) & set(nums_vlan_rel_ip)) if vlans_conflict: msg = 'VLANs {} already registred with same ' \ 'number in equipments of environment: {}' msg = msg.format(vlans_conflict, env_rel_eqpt.name) log.error(msg) raise models_env.IpErrorV3(msg) # Verify if networks of environment of IP make conflict in new # relationship for vlan_rel_ip in env_ip.vlans: # Get vrfs of 1 vlan of environment of IP vrfs_vlan_rel_ip = models_vrf.Vrf.objects.filter(Q( Q(vrfvlanequipment__equipment__in=eqpts) & Q(vrfvlanequipment__vlan__id=vlan_rel_ip.id)) | Q(id=vlan_rel_ip.ambiente.default_vrf_id) ) # Get vrfs of 1 vlan of environment related with # equipment for vlan_rel_eqpt in env_rel_eqpt.vlans: vrfs_vlan_rel_eqpt = models_vrf.Vrf.objects.filter(Q( Q(vrfvlanequipment__equipment__in=eqpts_env_ip) & Q(vrfvlanequipment__vlan__id=vlan_rel_eqpt.id)) | Q(id=vlan_rel_eqpt.ambiente.default_vrf_id) ) # Validate conflict of network if has intersect # of vrfs vrfs_intersect = list( set(vrfs_vlan_rel_ip) & set(vrfs_vlan_rel_eqpt)) if vrfs_intersect: netv4 = vrfs_vlan_rel_eqpt\ .networkipv4_set.filter() netv6 = vrfs_vlan_rel_eqpt\ .networkipv6_set.filter() netv4_eqpt = [IPNetwork(net.networkv4) for net in netv4] netv6_eqpt = [IPNetwork(net.networkv6) for net in netv6] netv4 = vrfs_vlan_rel_ip.networkipv4_set.filter() netv6 = vrfs_vlan_rel_ip.networkipv6_set.filter() netv4_ip = [IPNetwork(net.networkv4) for net in netv4] netv6_ip = [IPNetwork(net.networkv6) for net in netv6] verify_networks(netv4_ip, netv4_eqpt) verify_networks(netv6_ip, netv6_eqpt)
def get_serializers(self): """Returns the mapping of serializers.""" equipment_serializers = get_app('api_equipment', module_label='serializers') if not self.mapping: self.mapping = { 'type': { 'obj': 'tipo_id' }, 'type__details': { 'serializer': InterfaceTypeSerializer, 'kwargs': { 'kind': 'details', }, 'obj': 'tipo' }, 'channel': { 'obj': 'channel_id' }, 'channel__basic': { 'serializer': PortChannelSerializer, 'kwargs': { 'kind': 'basic' }, 'obj': 'channel', }, 'front_interface': { 'obj': 'ligacao_front_id' }, 'front_interface__basic': { 'serializer': InterfaceV3Serializer, 'kwargs': { 'kind': 'basic' }, 'obj': 'ligacao_front', }, 'front_interface__details': { 'serializer': InterfaceV3Serializer, 'kwargs': { 'kind': 'details' }, 'obj': 'ligacao_front', }, 'back_interface': { 'obj': 'ligacao_back_id' }, 'back_interface__basic': { 'serializer': InterfaceV3Serializer, 'kwargs': { 'kind': 'basic' }, 'obj': 'ligacao_back', }, 'back_interface__details': { 'serializer': InterfaceV3Serializer, 'kwargs': { 'kind': 'details' }, 'obj': 'ligacao_back', }, 'equipment': { 'obj': 'equipamento_id' }, 'equipment__basic': { 'serializer': equipment_serializers.EquipmentV3Serializer, 'kwargs': { 'kind': 'basic' }, 'obj': 'equipamento', }, 'equipment__details': { 'serializer': equipment_serializers.EquipmentV3Serializer, 'kwargs': { 'kind': 'details' }, 'obj': 'equipamento', }, }