def Run(self, args):
        holder = base_classes.ComputeApiHolder(self.ReleaseTrack())
        client = holder.client
        messages = holder.client.messages

        instance_ref = instances_flags.INSTANCE_ARG.ResolveAsResource(
            args,
            holder.resources,
            scope_lister=flags.GetDefaultScopeLister(holder.client))

        instance = client.apitools_client.instances.Get(
            messages.ComputeInstancesGetRequest(**instance_ref.AsDict()))
        for i in instance.networkInterfaces:
            if i.name == args.network_interface:
                break
        else:
            raise exceptions.UnknownArgumentException(
                'network-interface',
                'Instance does not have a network interface [{}], '
                'present interfaces are [{}].'.format(
                    args.network_interface,
                    ', '.join([i.name for i in instance.networkInterfaces])))

        request = messages.ComputeInstancesGetEffectiveFirewallsRequest(
            project=instance_ref.project,
            instance=instance_ref.instance,
            zone=instance_ref.zone,
            networkInterface=args.network_interface)
        res = client.apitools_client.instances.GetEffectiveFirewalls(request)
        org_firewall = []
        network_firewall = []
        if hasattr(res, 'firewalls'):
            network_firewall = firewalls_utils.SortNetworkFirewallRules(
                client, res.firewalls)

        if hasattr(res, 'organizationFirewalls'):
            for sp in res.organizationFirewalls:
                org_firewall_rule = firewalls_utils.SortOrgFirewallRules(
                    client, sp.rules)
                org_firewall.append(
                    client.messages.
                    InstancesGetEffectiveFirewallsResponseOrganizationFirewallPolicy(
                        id=sp.id, rules=org_firewall_rule))
        if args.IsSpecified('format') and args.format == 'json':
            return client.messages.InstancesGetEffectiveFirewallsResponseOrganizationFirewallPolicy(
                organizationFirewalls=org_firewall, firewalls=network_firewall)

        result = []
        for sp in org_firewall:
            result.extend(
                firewalls_utils.
                ConvertOrgSecurityPolicyRulesToEffectiveFwRules(sp))
        result.extend(
            firewalls_utils.ConvertNetworkFirewallRulesToEffectiveFwRules(
                network_firewall))
        return result
Esempio n. 2
0
 def Run(self, args):
     holder = base_classes.ComputeApiHolder(self.ReleaseTrack())
     ref = self.ORG_SECURITY_POLICY_ARG.ResolveAsResource(
         args, holder.resources, with_project=False)
     org_security_policy = client.OrgSecurityPolicy(
         ref=ref,
         compute_client=holder.client,
         resources=holder.resources,
         version=six.text_type(self.ReleaseTrack()).lower())
     sp_id = org_security_policies_utils.GetSecurityPolicyId(
         org_security_policy, ref.Name(), organization=args.organization)
     response = org_security_policy.Describe(sp_id=sp_id,
                                             only_generate_request=False)
     if not response:
         return None
     return firewalls_utils.SortOrgFirewallRules(holder.client,
                                                 response[0].rules)
Esempio n. 3
0
    def Run(self, args):
        holder = base_classes.ComputeApiHolder(self.ReleaseTrack())
        client = holder.client

        network_ref = flags.NetworkArgument().ResolveAsResource(
            args,
            holder.resources,
            scope_lister=compute_flags.GetDefaultScopeLister(client))

        request = client.messages.ComputeNetworksGetEffectiveFirewallsRequest(
            **network_ref.AsDict())
        responses = client.MakeRequests([(client.apitools_client.networks,
                                          'GetEffectiveFirewalls', request)])
        res = responses[0]
        org_firewall = []
        network_firewall = []
        if hasattr(res, 'firewalls'):
            network_firewall = firewalls_utils.SortNetworkFirewallRules(
                client, res.firewalls)

        if hasattr(res, 'organizationFirewalls'):
            for sp in res.organizationFirewalls:
                org_firewall_rule = firewalls_utils.SortOrgFirewallRules(
                    client, sp.rules)
                org_firewall.append(
                    client.messages.
                    NetworksGetEffectiveFirewallsResponseOrganizationFirewallPolicy(
                        id=sp.id, rules=org_firewall_rule))
        if args.IsSpecified('format') and args.format == 'json':
            return client.messages.NetworksGetEffectiveFirewallsResponse(
                organizationFirewalls=org_firewall, firewalls=network_firewall)

        result = []
        for sp in org_firewall:
            result.extend(
                firewalls_utils.
                ConvertOrgSecurityPolicyRulesToEffectiveFwRules(sp))
        result.extend(
            firewalls_utils.ConvertNetworkFirewallRulesToEffectiveFwRules(
                network_firewall))
        return result