Beispiel #1
0
    def create_v4(self, peer_group, user):
        """Create PeerGroup."""

        routemap_model = get_model('api_route_map', 'RouteMap')

        route_map_in_id = peer_group.get('route_map_in')
        route_map_out_id = peer_group.get('route_map_out')

        self.route_map_in = routemap_model.get_by_pk(route_map_in_id)
        self.route_map_out = routemap_model.get_by_pk(route_map_out_id)
        self.name = peer_group.get('name')

        # Validation
        self.check_route_map_in_and_out_are_equal()
        self.check_route_maps_already_in_other_peer_groups()

        self.save()

        # Save relationships with environments
        environment_peergroup_model = get_model('api_peer_group',
                                                'EnvironmentPeerGroup')
        for id_environment in peer_group.get('environments'):
            environment_peergroup_model().create_v4({
                'peer_group': self.id,
                'environment': id_environment
            })

        # Permissions
        object_group_perm_model = get_model('api_ogp', 'ObjectGroupPermission')
        object_group_perm_model().create_perms(
            peer_group, self.id, AdminPermission.OBJ_TYPE_PEER_GROUP, user)
Beispiel #2
0
    def update_v4(self, peer_group, user):
        """Update PeerGroup."""

        self.name = peer_group.get('name')

        # Validation
        self.check_peer_group_is_in_deployed_neighbors()

        self.save()

        environment_ids = peer_group.get('environments')
        # Get current associates
        current = self.environmentpeergroup_set \
            .filter(environment__in=environment_ids) \
            .values_list('environment', flat=True)

        # Creates new associate
        for id_environment in environment_ids:
            if id_environment not in current:
                EnvironmentPeerGroup().create_v4({
                    'peer_group': self.id,
                    'environment': id_environment
                })

        # Removes old associates
        for environment_peer_group in self.environmentpeergroup_set\
                .exclude(environment__in=environment_ids):
            environment_peer_group.delete_v4()

        # Permissions
        object_group_perm_model = get_model('api_ogp',
                                            'ObjectGroupPermission')
        object_group_perm_model().update_perms(
            peer_group, self.id, AdminPermission.OBJ_TYPE_PEER_GROUP, user)
Beispiel #3
0
def check_permissions_in_peer_group(neighbor, user):

    obj_group_perm_general = get_model('api_ogp',
                                       'ObjectGroupPermissionGeneral')
    obj_group_perm = get_model('api_ogp', 'ObjectGroupPermission')

    # Peer Group General
    perms_general = obj_group_perm_general.objects.filter(
        Q(write=True), Q(user_group__id__in=user.grupos.all()),
        Q(object_type__name=AdminPermission.OBJ_TYPE_PEER_GROUP))
    # Peer Group Specific
    perms_specific = obj_group_perm.objects.filter(
        Q(write=True), Q(object_value=neighbor.peer_group.id),
        Q(user_group__id__in=user.grupos.all()),
        Q(object_type__name=AdminPermission.OBJ_TYPE_PEER_GROUP))

    if not perms_general and not perms_specific:
        raise DontHavePermissionForPeerGroupException(neighbor)
Beispiel #4
0
    def create_v4(self, list_config_bgp):

        eqpt_model = get_model('equipamento', 'Equipamento')

        self.equipment = eqpt_model.get_by_pk(
            list_config_bgp.get('equipment'))
        self.list_config_bgp = ListConfigBGP.get_by_pk(
            list_config_bgp.get('list_config_bgp'))
        self.save()
Beispiel #5
0
    def deploy(self):
        """Deploy NeighborV6."""

        self.created = True
        self.save()

        EquipmentRouteMap = get_model('api_route_map', 'EquipmentRouteMap')
        EquipmentListConfig = get_model('api_list_config_bgp',
                                        'EquipmentListConfig')

        equipment = self.local_ip.equipments[0]
        route_map_out = self.peer_group.route_map_out
        route_map_in = self.peer_group.route_map_in

        eqpt_route_map = EquipmentRouteMap.objects.filter(
            equipment=equipment, route_map=route_map_in)
        if not eqpt_route_map:
            EquipmentRouteMap().create_v4({
                'equipment': equipment.id,
                'route_map': route_map_in.id
            })

        eqpt_route_map = EquipmentRouteMap.objects.filter(
            equipment=equipment, route_map=route_map_out)
        if not eqpt_route_map:
            EquipmentRouteMap().create_v4({
                'equipment': equipment.id,
                'route_map': route_map_out.id
            })

        entries = route_map_out.route_map_entries | route_map_in.route_map_entries
        for entry in entries:
            eqpt_list_config = EquipmentListConfig.objects.filter(
                equipment=equipment, route_map=entry.list_config_bgp)
            if not eqpt_list_config:
                EquipmentListConfig().create_v4({
                    'equipment':
                    equipment.id,
                    'list_config_bgp':
                    entry.list_config_bgp.id
                })
Beispiel #6
0
    def update_v4(self, route_map_entry):
        """Update RouteMapEntry."""

        listconfigbgp_model = get_model('api_list_config_bgp', 'ListConfigBGP')

        self.action = route_map_entry.get('action')
        self.action_reconfig = route_map_entry.get('action_reconfig')
        self.order = route_map_entry.get('order')

        self.check_route_map_already_deployed()

        self.save()
Beispiel #7
0
    def create_v4(self, environment_peergroup):
        """Create EnvironmentPeerGroup."""

        environment_model = get_model('ambiente', 'Ambiente')

        environment_id = environment_peergroup.get('environment')
        peer_group_id = environment_peergroup.get('peer_group')

        self.environment = environment_model.get_by_pk(environment_id)
        self.peer_group = PeerGroup.get_by_pk(peer_group_id)

        self.save()
Beispiel #8
0
    def create_v4(self, environment_peergroup):
        """Create EnvironmentPeerGroup."""

        environment_model = get_model('ambiente', 'Ambiente')

        environment_id = environment_peergroup.get('environment')
        peer_group_id = environment_peergroup.get('peer_group')

        self.environment = environment_model.get_by_pk(environment_id)
        self.peer_group = PeerGroup.get_by_pk(peer_group_id)

        self.save()
Beispiel #9
0
    def undeploy(self):
        """Deploy NeighborV6."""

        self.created = False
        self.save()

        EquipmentRouteMap = get_model('api_route_map', 'EquipmentRouteMap')
        EquipmentListConfig = get_model('api_list_config_bgp',
                                        'EquipmentListConfig')

        route_map_out = self.peer_group.route_map_out
        route_map_in = self.peer_group.route_map_in
        equipment = self.local_ip.equipments[0]

        neighbor_v4, neighbor_v6 = get_neighbors_route_map(
            route_map_in, equipment)
        neighbor_v6 = neighbor_v6.exclude(id=self.id)
        if not neighbor_v4 and not neighbor_v6:
            EquipmentRouteMap.objects.filter(equipment=equipment,
                                             route_map=route_map_in).delete()

        neighbor_v4, neighbor_v6 = get_neighbors_route_map(
            route_map_out, equipment)
        neighbor_v6 = neighbor_v6.exclude(id=self.id)
        if not neighbor_v4 and not neighbor_v6:
            EquipmentRouteMap.objects.filter(equipment=equipment,
                                             route_map=route_map_out).delete()

        entries = route_map_out.route_map_entries | route_map_in.route_map_entries
        for entry in entries:
            neighbor_v4, neighbor_v6 = get_neighbors_list_config_bgp(
                entry.list_config_bgp, equipment)
            neighbor_v6 = neighbor_v6.exclude(id=self.id)
            if not neighbor_v4 and not neighbor_v6:
                EquipmentListConfig.objects.filter(
                    equipment=equipment,
                    route_map=entry.list_config_bgp).delete()
Beispiel #10
0
    def create_v4(self, peer_group, user):
        """Create PeerGroup."""

        routemap_model = get_model('api_route_map', 'RouteMap')

        route_map_in_id = peer_group.get('route_map_in')
        route_map_out_id = peer_group.get('route_map_out')

        self.route_map_in = routemap_model.get_by_pk(
            route_map_in_id) if route_map_in_id else None
        self.route_map_out = routemap_model.get_by_pk(
            route_map_out_id) if route_map_out_id else None
        self.name = peer_group.get('name')

        # Validation
        if route_map_in_id and route_map_out_id:
            self.check_route_map_in_and_out_are_equal()
        # self.check_route_maps_already_in_other_peer_groups()

        self.save()

        # Save relationships with environments
        environment_peergroup_model = get_model('api_peer_group',
                                                'EnvironmentPeerGroup')
        for id_environment in peer_group.get('environments'):
            environment_peergroup_model().create_v4({
                'peer_group':
                self.id,
                'environment':
                id_environment
            })

        # Permissions
        object_group_perm_model = get_model('api_ogp', 'ObjectGroupPermission')
        object_group_perm_model().create_perms(
            peer_group, self.id, AdminPermission.OBJ_TYPE_PEER_GROUP, user)
Beispiel #11
0
    def delete_v4(self):
        """Delete PeerGroup."""

        self.check_peer_group_associated_to_neighbors()

        # Deletes Permissions
        object_group_perm_model = get_model('api_ogp', 'ObjectGroupPermission')
        object_group_perm_model.objects.filter(
            object_type__name=AdminPermission.OBJ_TYPE_PEER_GROUP,
            object_value=self.id).delete()

        for environment_peergroup in self.environmentpeergroup_set.all():
            environment_peergroup.delete_v4()

        super(PeerGroup, self).delete()
Beispiel #12
0
    def create_v4(self, route_map_entry):
        """Create RouteMapEntry."""

        listconfigbgp_model = get_model('api_list_config_bgp', 'ListConfigBGP')

        self.action = route_map_entry.get('action')
        self.action_reconfig = route_map_entry.get('action_reconfig')
        self.order = route_map_entry.get('order')

        self.list_config_bgp = listconfigbgp_model.get_by_pk(
            route_map_entry.get('list_config_bgp'))
        self.route_map = RouteMap.get_by_pk(route_map_entry.get('route_map'))

        self.check_list_config_bgp_already_in_route_map_entries()
        self.check_route_map_already_deployed()

        self.save()
Beispiel #13
0
    def delete_v4(self):
        """Delete PeerGroup."""

        self.check_peer_group_associated_to_neighbors()

        # Deletes Permissions
        object_group_perm_model = get_model('api_ogp',
                                            'ObjectGroupPermission')
        object_group_perm_model.objects.filter(
            object_type__name=AdminPermission.OBJ_TYPE_PEER_GROUP,
            object_value=self.id
        ).delete()

        for environment_peergroup in self.environmentpeergroup_set.all():
            environment_peergroup.delete_v4()

        super(PeerGroup, self).delete()
Beispiel #14
0
    def update_v4(self, neighbor_map):
        """Update Neighbor."""

        vi_model = get_model('api_virtual_interface', 'VirtualInterface')

        self.remote_as = neighbor_map.get('remote_as')
        self.remote_ip = neighbor_map.get('remote_ip')
        self.password = neighbor_map.get('password')
        self.maximum_hops = neighbor_map.get('maximum_hops')
        self.timer_keepalive = neighbor_map.get('timer_keepalive')
        self.timer_timeout = neighbor_map.get('timer_timeout')
        self.description = neighbor_map.get('description')
        self.soft_reconfiguration = neighbor_map.get('soft_reconfiguration')
        self.community = neighbor_map.get('community')
        self.remove_private_as = neighbor_map.get('remove_private_as')
        self.next_hop_self = neighbor_map.get('next_hop_self')
        self.kind = neighbor_map.get('kind')
        # self.created =  neighbor_map.get('created')
        self.virtual_interface = vi_model.get_by_pk(
            neighbor_map.get('virtual_interface'))

        self.save()