def Run(self, args):
        api_version = util.GetApiFromTrack(self.ReleaseTrack())
        client = util.GetApiClient(api_version)
        messages = apis.GetMessagesModule('dns', api_version)

        # Get Policy
        policy_ref = args.CONCEPTS.policy.Parse()
        policy_name = policy_ref.Name()

        policy = messages.Policy(name=policy_name,
                                 enableLogging=False,
                                 enableInboundForwarding=False)

        if args.IsSpecified('networks'):
            if args.networks == ['']:
                args.networks = []
            policy.networks = command_util.ParseNetworks(
                args.networks, policy_ref.project, api_version)
        else:
            raise exceptions.RequiredArgumentException('--networks', ("""
           A list of networks must be
           provided.'
         NOTE: You can provide an empty value ("") for policies that
          have NO network binding.
          """))

        if args.IsSpecified('alternative_name_servers') or args.IsSpecified(
                'private_alternative_name_servers'):
            if args.alternative_name_servers == ['']:
                args.alternative_name_servers = []
            if args.private_alternative_name_servers == ['']:
                args.private_alternative_name_servers = []
            policy.alternativeNameServerConfig = command_util.ParseAltNameServers(
                version=api_version,
                server_list=args.alternative_name_servers,
                private_server_list=args.private_alternative_name_servers)

        if args.IsSpecified('enable_inbound_forwarding'):
            policy.enableInboundForwarding = args.enable_inbound_forwarding

        if args.IsSpecified('enable_logging'):
            policy.enableLogging = args.enable_logging

        if args.IsSpecified('description'):
            policy.description = args.description

        create_request = messages.DnsPoliciesCreateRequest(
            policy=policy, project=policy_ref.project)

        result = client.policies.Create(create_request)

        log.CreatedResource(policy_ref, kind='Policy')

        return result
Beispiel #2
0
    def Run(self, args):
        api_version = util.GetApiFromTrack(self.ReleaseTrack())
        client = util.GetApiClient(api_version)
        messages = apis.GetMessagesModule('dns', api_version)

        # Get Policy
        policy_ref = args.CONCEPTS.policy.Parse()
        to_update = self._FetchPolicy(policy_ref, api_version)

        if not (args.IsSpecified('networks') or args.IsSpecified('description')
                or args.IsSpecified('enable_inbound_forwarding')
                or args.IsSpecified('enable_logging')
                or args.IsSpecified('alternative_name_servers')):
            log.status.Print('Nothing to update.')
            return to_update

        if args.IsSpecified('networks'):
            if args.networks == ['']:
                args.networks = []
            to_update.networks = command_util.ParseNetworks(
                args.networks, policy_ref.project, api_version)

        if args.IsSpecified('alternative_name_servers') or args.IsSpecified(
                'private_alternative_name_servers'):
            if args.alternative_name_servers == ['']:
                args.alternative_name_servers = []
            if args.private_alternative_name_servers == ['']:
                args.private_alternative_name_servers = []
            to_update.alternativeNameServerConfig = command_util.ParseAltNameServers(
                version=api_version,
                server_list=args.alternative_name_servers,
                private_server_list=args.private_alternative_name_servers)

        if args.IsSpecified('enable_inbound_forwarding'):
            to_update.enableInboundForwarding = args.enable_inbound_forwarding

        if args.IsSpecified('enable_logging'):
            to_update.enableLogging = args.enable_logging

        if args.IsSpecified('description'):
            to_update.description = args.description

        update_req = messages.DnsPoliciesUpdateRequest(
            policy=to_update.name,
            policyResource=to_update,
            project=policy_ref.project)

        updated_policy = client.policies.Update(update_req).policy

        log.UpdatedResource(updated_policy.name, kind='Policy')

        return updated_policy