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'
                }
            }
Пример #2
0
    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'
                }
            }
Пример #3
0
    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'
                }
            }
Пример #4
0
    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)
Пример #5
0
    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)
Пример #6
0
    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
Пример #7
0
    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',
                },
            }
Пример #8
0
    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'
                }
            }
Пример #9
0
    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)
Пример #10
0
    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
                },
            }
Пример #11
0
    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)
Пример #12
0
    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
Пример #13
0
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)
Пример #14
0
    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',
                },
            }
Пример #15
0
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)
Пример #16
0
    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'
                }
            }
Пример #17
0
    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
                },
            }
Пример #18
0
    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'
                },
            }
Пример #19
0
    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'
                },
            }
Пример #20
0
    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()
Пример #21
0
    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()
Пример #22
0
    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',
                },
            }
Пример #23
0
    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
Пример #24
0
    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()
Пример #25
0
    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()
Пример #26
0
    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'
                }
            }
Пример #27
0
    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)
Пример #28
0
    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)
Пример #29
0
    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'
                }
            }
Пример #30
0
    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
Пример #32
0
    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)
Пример #33
0
    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()
Пример #34
0
    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)
Пример #35
0
    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()
Пример #36
0
    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',
                },
            }
Пример #37
0
    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
Пример #38
0
    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)
Пример #39
0
    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
Пример #40
0
    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()
Пример #41
0
    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)
Пример #42
0
    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',
                },
            }
Пример #43
0
    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'
                }
            }
Пример #44
0
    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")
Пример #45
0
    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',
                },
            }
Пример #46
0
    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
Пример #47
0
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)
Пример #48
0
    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()
Пример #49
0
    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')
Пример #50
0
    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')
Пример #51
0
    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'
                }
            }
Пример #52
0
    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'
                }
            }
Пример #53
0
    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")
Пример #54
0
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)
Пример #55
0
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
Пример #56
0
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()
Пример #57
0
    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'
                }
            }
Пример #58
0
    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',
                }
            }
Пример #59
0
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)
Пример #60
0
    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',
                },
            }