Exemplo n.º 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
Exemplo n.º 2
0
  def Run(self, args):
    with trans_util.TransactionFile(args.transaction_file) as trans_file:
      change = trans_util.ChangeFromYamlFile(trans_file)

    dns = self.context['dns_client']
    messages = self.context['dns_messages']
    resources = self.context['dns_resources']
    project_id = properties.VALUES.core.project.Get(required=True)

    record_to_remove = trans_util.CreateRecordSetFromArgs(args)

    # Ensure the record to be removed exists
    zone_ref = resources.Parse(args.zone, collection='dns.managedZones')
    existing_records = [record for record in apitools.YieldFromList(
        dns.resourceRecordSets,
        messages.DnsResourceRecordSetsListRequest(
            project=project_id,
            managedZone=zone_ref.Name(),
            name=args.name,
            type=args.type),
        field='rrsets')]
    if not existing_records or existing_records[0] != record_to_remove:
      raise exceptions.ToolException('Record to be removed does not exist')

    change.deletions.append(record_to_remove)

    with trans_util.TransactionFile(args.transaction_file, 'w') as trans_file:
      trans_util.WriteToYamlFile(trans_file, change)

    log.status.Print(
        'Record removal appended to transaction at [{0}].'.format(
            args.transaction_file))
Exemplo n.º 3
0
  def Run(self, args):
    with trans_util.TransactionFile(args.transaction_file) as trans_file:
      change = trans_util.ChangeFromYamlFile(trans_file)

    change.additions.append(trans_util.CreateRecordSetFromArgs(args))

    with trans_util.TransactionFile(args.transaction_file, 'w') as trans_file:
      trans_util.WriteToYamlFile(trans_file, change)

    log.status.Print(
        'Record addition appended to transaction at [{0}].'.format(
            args.transaction_file))
Exemplo n.º 4
0
 def Run(self, args):
     with transaction_util.TransactionFile(
             args.transaction_file) as trans_file:
         return transaction_util.ChangeFromYamlFile(trans_file)