示例#1
0
    def Run(self, args):
        with transaction_util.TransactionFile(
                args.transaction_file) as trans_file:
            change = transaction_util.ChangeFromYamlFile(trans_file)

        if import_util.IsOnlySOAIncrement(change):
            log.status.Print('Nothing to do, empty transaction [{0}]'.format(
                args.transaction_file))
            os.remove(args.transaction_file)
            return None

        dns = self.context['dns_client']
        messages = self.context['dns_messages']
        resources = self.context['dns_resources']
        project_id = properties.VALUES.core.project.Get(required=True)
        zone_ref = resources.Parse(args.zone, collection='dns.managedZones')

        # Send the change to the service.
        result = dns.changes.Create(
            messages.DnsChangesCreateRequest(change=change,
                                             managedZone=zone_ref.Name(),
                                             project=project_id))
        change_ref = resources.Create(collection='dns.changes',
                                      project=project_id,
                                      managedZone=zone_ref.Name(),
                                      changeId=result.id)
        msg = 'Executed transaction [{0}] for managed-zone [{1}].'.format(
            args.transaction_file, zone_ref.Name())
        log.status.Print(msg)
        log.CreatedResource(change_ref)
        os.remove(args.transaction_file)
        return result
示例#2
0
    def Run(self, args):
        with transaction_util.TransactionFile(
                args.transaction_file) as trans_file:
            change = transaction_util.ChangeFromYamlFile(trans_file)

        if import_util.IsOnlySOAIncrement(change):
            log.status.Print('Nothing to do, empty transaction [{0}]'.format(
                args.transaction_file))
            os.remove(args.transaction_file)
            return None

        dns = apis.GetClientInstance('dns', 'v1')
        messages = apis.GetMessagesModule('dns', 'v1')
        zone_ref = resources.REGISTRY.Parse(
            args.zone,
            params={
                'project': properties.VALUES.core.project.GetOrFail,
            },
            collection='dns.managedZones')

        # Send the change to the service.
        result = dns.changes.Create(
            messages.DnsChangesCreateRequest(change=change,
                                             managedZone=zone_ref.Name(),
                                             project=zone_ref.project))
        change_ref = resources.REGISTRY.Create(collection='dns.changes',
                                               project=zone_ref.project,
                                               managedZone=zone_ref.Name(),
                                               changeId=result.id)
        msg = 'Executed transaction [{0}] for managed-zone [{1}].'.format(
            args.transaction_file, zone_ref.Name())
        log.status.Print(msg)
        log.CreatedResource(change_ref)
        os.remove(args.transaction_file)
        return result
示例#3
0
    def Run(self, args):
        api_version = 'v1'
        # If in the future there are differences between API version, do NOT use
        # this patter of checking ReleaseTrack. Break this into multiple classes.
        if self.ReleaseTrack() == base.ReleaseTrack.BETA:
            api_version = 'v1beta2'
        elif self.ReleaseTrack() == base.ReleaseTrack.ALPHA:
            api_version = 'v1alpha2'

        with transaction_util.TransactionFile(
                args.transaction_file) as trans_file:
            change = transaction_util.ChangeFromYamlFile(
                trans_file, api_version=api_version)

        if import_util.IsOnlySOAIncrement(change, api_version=api_version):
            log.status.Print('Nothing to do, empty transaction [{0}]'.format(
                args.transaction_file))
            os.remove(args.transaction_file)
            return None

        dns = apis.GetClientInstance('dns', api_version)
        zone_ref = util.GetRegistry(api_version).Parse(
            args.zone,
            params={
                'project': properties.VALUES.core.project.GetOrFail,
            },
            collection='dns.managedZones')

        # Send the change to the service.
        result = dns.changes.Create(
            dns.MESSAGES_MODULE.DnsChangesCreateRequest(
                change=change,
                managedZone=zone_ref.Name(),
                project=zone_ref.project))
        change_ref = util.GetRegistry(api_version).Create(
            collection='dns.changes',
            project=zone_ref.project,
            managedZone=zone_ref.Name(),
            changeId=result.id)
        msg = 'Executed transaction [{0}] for managed-zone [{1}].'.format(
            args.transaction_file, zone_ref.Name())
        log.status.Print(msg)
        log.CreatedResource(change_ref)
        os.remove(args.transaction_file)
        return result