Exemplo n.º 1
0
 def _MakeMirroredSubnetInfo(subnet):
     return messages.PacketMirroringMirroredResourceInfoSubnetInfo(
         url=utils.ResolveSubnetURI(pm_ref.project, pm_ref.region,
                                    subnet, holder.resources))
Exemplo n.º 2
0
    def _UpdateResource(self, pm_ref, resource, cleared_fields, holder, args,
                        messages):
        if args.enable is not None:
            resource.enable = (
                messages.PacketMirroring.EnableValueValuesEnum.TRUE
                if args.enable else
                messages.PacketMirroring.EnableValueValuesEnum.FALSE)

        if args.collector_ilb is not None:
            resource.collectorIlb = messages.PacketMirroringForwardingRuleInfo(
                url=utils.ResolveForwardingRuleURI(
                    pm_ref.project, pm_ref.region, args.collector_ilb,
                    holder.resources))

        if args.description is not None:
            resource.description = args.description

        if args.clear_mirrored_tags:
            resource.mirroredResources.tags[:] = []
            cleared_fields.append('mirroredResources.tags')
        elif args.add_mirrored_tags:
            resource.mirroredResources.tags.extend(args.add_mirrored_tags)
        elif args.set_mirrored_tags:
            resource.mirroredResources.tags[:] = args.set_mirrored_tags
        elif args.remove_mirrored_tags:
            for tag in args.remove_mirrored_tags:
                if tag not in resource.mirroredResources.tags:
                    raise exceptions.InvalidArgumentException(
                        'Tag %s not found in this packet mirroring.' % tag)
            resource.mirroredResources.tags[:] = [
                x for x in resource.mirroredResources.tags
                if x not in args.remove_mirrored_tags
            ]

        def _MakeSubnetInfo(subnet):
            return messages.PacketMirroringMirroredResourceInfoSubnetInfo(
                url=utils.ResolveSubnetURI(pm_ref.project, pm_ref.region,
                                           subnet, holder.resources))

        if args.clear_mirrored_subnets:
            resource.mirroredResources.subnetworks[:] = []
            cleared_fields.append('mirroredResources.subnetworks')
        elif args.add_mirrored_subnets:
            resource.mirroredResources.subnetworks.extend([
                _MakeSubnetInfo(subnet) for subnet in args.add_mirrored_subnets
            ])
        elif args.set_mirrored_subnets:
            resource.mirroredResources.subnetworks[:] = [
                _MakeSubnetInfo(subnet) for subnet in args.set_mirrored_subnets
            ]
        elif args.remove_mirrored_subnets:
            urls = [
                utils.ResolveSubnetURI(pm_ref.project, pm_ref.region, subnet,
                                       holder.resources)
                for subnet in args.remove_mirrored_subnets
            ]
            for url in urls:
                if next((x for x in resource.mirroredResources.subnetworks
                         if x.url == url), None) is None:
                    raise exceptions.InvalidArgumentException(
                        'Subnet %s not found in this packet mirroring.' % url)
            resource.mirroredResources.subnetworks = [
                x for x in resource.mirroredResources.subnetworks
                if x.url not in urls
            ]

        def _MakeInstanceInfo(instance):
            return messages.PacketMirroringMirroredResourceInfoInstanceInfo(
                url=utils.ResolveInstanceURI(pm_ref.project, instance,
                                             holder.resources))

        if args.clear_mirrored_instances:
            resource.mirroredResources.instances[:] = []
            cleared_fields.append('mirroredResources.instances')
        elif args.add_mirrored_instances:
            resource.mirroredResources.instances.extend([
                _MakeInstanceInfo(instance)
                for instance in args.add_mirrored_instances
            ])
        elif args.set_mirrored_instances:
            resource.mirroredResources.instances[:] = [
                _MakeInstanceInfo(instance)
                for instance in args.set_mirrored_instances
            ]
        elif args.remove_mirrored_instances:
            urls = [
                utils.ResolveInstanceURI(pm_ref.project, instance,
                                         holder.resources)
                for instance in args.remove_mirrored_instances
            ]
            for url in urls:
                if next((x for x in resource.mirroredResources.instances
                         if x.url == url), None) is None:
                    raise exceptions.InvalidArgumentException(
                        'Instance %s not found in this packet mirroring.' %
                        url)
            resource.mirroredResources.instances = [
                x for x in resource.mirroredResources.instances
                if x.url not in urls
            ]

        if args.clear_filter_protocols:
            resource.filter.IPProtocols[:] = []
        elif args.add_filter_protocols:
            resource.filter.IPProtocols.extend(args.add_filter_protocols)
        elif args.set_filter_protocols:
            resource.filter.IPProtocols[:] = args.set_filter_protocols
        elif args.remove_filter_protocols:
            for protocol in args.remove_filter_protocols:
                if protocol not in resource.filter.IPProtocols:
                    raise exceptions.InvalidArgumentException(
                        'Protocol %s not found in this packet mirroring.' %
                        protocol)
            resource.filter.IPProtocols[:] = [
                x for x in resource.filter.IPProtocols
                if x not in args.remove_filter_protocols
            ]

        if args.clear_filter_cidr_ranges:
            resource.filter.cidrRanges[:] = []
        elif args.add_filter_cidr_ranges:
            resource.filter.cidrRanges.extend(args.add_filter_cidr_ranges)
        elif args.set_filter_cidr_ranges:
            resource.filter.cidrRanges[:] = args.set_filter_cidr_ranges
        elif args.remove_filter_cidr_ranges:
            for cidr in args.remove_filter_cidr_ranges:
                if cidr not in resource.filter.cidrRanges:
                    raise exceptions.InvalidArgumentException(
                        'CIDR Range %s not found in this packet mirroring.' %
                        cidr)
            resource.filter.cidrRanges[:] = [
                x for x in resource.filter.cidrRanges
                if x not in args.remove_filter_cidr_ranges
            ]

        if self.enable_filter_direction and args.filter_direction:
            resource.filter.direction = messages.PacketMirroringFilter.DirectionValueValuesEnum(
                args.filter_direction.upper())