Exemple #1
0
    def _ImportReplaceFromFileHelper(self, file_path, flags=None):
        test_zone = util_beta.GetManagedZones()[0]
        self.mocked_dns_client.managedZones.Get.Expect(
            self.messages_beta.DnsManagedZonesGetRequest(
                managedZone=test_zone.name, project=self.Project()), test_zone)

        self.mocked_dns_client.resourceRecordSets.List.Expect(
            self.messages_beta.DnsResourceRecordSetsListRequest(
                project=self.Project(),
                managedZone=test_zone.name,
                maxResults=100),
            self.messages_beta.ResourceRecordSetsListResponse(
                rrsets=util_beta.GetRecordSets()))

        self.mocked_dns_client.changes.Create.Expect(
            self.messages_beta.DnsChangesCreateRequest(
                change=util_beta.GetImportReplaceChange(),
                managedZone=test_zone.name,
                project=self.Project()),
            util_beta.GetImportReplaceChangeAfterCreation())

        self.Run([
            'dns', 'record-sets', 'import', '-z', test_zone.name, file_path,
            '--delete-all-existing', '--replace-origin-ns'
        ] + (flags or []))
        self.AssertOutputContains("""\
ID  START_TIME        STATUS
2   today 5 mins ago  done
""",
                                  normalize_space=True)
        self.AssertErrContains("""\
Created [{0}projects/{1}/managedZones/mz/changes/2].
""".format(self.client.BASE_URL, self.Project()))
Exemple #2
0
    def testTransactionStart(self):
        test_zone = util_beta.GetManagedZones()[0]
        self.mocked_dns_client.managedZones.Get.Expect(
            self.messages_beta.DnsManagedZonesGetRequest(
                managedZone=test_zone.name, project=self.Project()), test_zone)

        self.mocked_dns_client.resourceRecordSets.List.Expect(
            self.messages_beta.DnsResourceRecordSetsListRequest(
                project=self.Project(),
                managedZone=test_zone.name,
                name=test_zone.dnsName,
                type='SOA',
                maxResults=100),
            self.messages_beta.ResourceRecordSetsListResponse(
                rrsets=util_beta.GetRecordSets()[2:3]))

        self.Run('dns record-sets transaction start -z {0} '.format(
            test_zone.name))
        self.AssertErrContains('Transaction started [{0}].'.format(
            transaction_util.DEFAULT_PATH))

        with open(transaction_util.DEFAULT_PATH) as results:
            with open(self.initial_transaction) as expected:
                self.assertEqual(expected.readlines(), results.readlines())
        os.remove(transaction_util.DEFAULT_PATH)
Exemple #3
0
 def testTransactionRemoveBeforeStart(self):
   test_zone = util_beta.GetManagedZones()[0]
   test_record = util_beta.GetRecordSets()[0]
   with self.assertRaises(transaction_util.TransactionFileNotFound) as context:
     self.Run('dns record-sets transaction remove -z {0} --name {1} --ttl {2}'
              ' --type {3} {4}'.format(test_zone.name, test_record.name,
                                       test_record.ttl, test_record.type,
                                       test_record.rrdatas[0]))
     self.assertEqual(context.exception.message,
                      'Transaction not found at [{0}]'.format(
                          transaction_util.DEFAULT_PATH))
Exemple #4
0
 def testComputeChangeNoConflicts(self):
     current_record_sets = dict(
         ((record_set.name, record_set.type), record_set)
         for record_set in util_beta.GetRecordSets())
     change = import_util.ComputeChange(
         current_record_sets,
         util_beta.GetImportedRecordSetsWithoutConflicts(),
         False,
         'zone.com.',
         True,
         api_version=self.api_version)
     self.assertEqual(util_beta.GetImportChange(), change)
Exemple #5
0
 def testComputeChangeConflicts(self):
     current_record_sets = dict(
         ((record_set.name, record_set.type), record_set)
         for record_set in util_beta.GetRecordSets())
     with self.assertRaises(import_util.ConflictingRecordsFound) as context:
         import_util.ComputeChange(current_record_sets,
                                   util_beta.GetImportedRecordSets(),
                                   False,
                                   'zone.com.',
                                   True,
                                   api_version=self.api_version)
         self.assertEqual(
             context.exception.message,
             'The following records (name type) already exist: '
             '[\'mail.zone.com. A\', \'zone.com. A\', \'zone.com. SOA\']')
Exemple #6
0
  def testMultipleRecordSetsList(self):
    test_zone = util_beta.GetManagedZones()[0]
    self.mocked_dns_client.resourceRecordSets.List.Expect(
        self.messages_beta.DnsResourceRecordSetsListRequest(
            project=self.Project(),
            managedZone=test_zone.name,
            maxResults=100),
        self.messages_beta.ResourceRecordSetsListResponse(
            rrsets=util_beta.GetRecordSets()))

    self.Run('dns record-sets list -z {0}'.format(test_zone.name))
    self.AssertOutputContains("""\
    NAME            TYPE   TTL    DATA
    zone.com.       A      21600  1.2.3.4
    zone.com.       NS     21600  ns-cloud-e1.googledomains.com.,ns-cloud-e2.googledomains.com.,ns-cloud-e3.googledomains.com.,ns-cloud-e4.googledomains.com.
    zone.com.       SOA    21601  ns-cloud-e1.googledomains.com. dns-admin.google.com. 2 21600 3600 1209600 300
    mail.zone.com.  A      21600  5.6.7.8
    www.zone.com.   CNAME  21600  zone.com.
    """, normalize_space=True)
Exemple #7
0
    def testComputeChangeReplaceAll(self):
        current_record_sets = dict(
            ((record_set.name, record_set.type), record_set)
            for record_set in util_beta.GetRecordSets())
        change = import_util.ComputeChange(current_record_sets,
                                           util_beta.GetImportedRecordSets(),
                                           True,
                                           'zone.com.',
                                           True,
                                           api_version=self.api_version)
        self.assertEqual(util_beta.GetImportReplaceChange(), change)
        change = import_util.ComputeChange(current_record_sets,
                                           util_beta.GetImportedRecordSets(),
                                           True,
                                           'zone.com.',
                                           False,
                                           api_version=self.api_version)

        self.assertEqual(util_beta.GetImportReplaceChangeNoReplaceOrigin(),
                         change)
  def testTransactionAddDatum(self):
    shutil.copyfile(
        self.initial_transaction, transaction_util.DEFAULT_PATH)

    test_zone = util_beta.GetManagedZones()[0]
    test_record = util_beta.GetRecordSets()[0]
    self.Run(
        'dns record-sets transaction add -z {0} --name {1} --ttl {2} --type '
        '{3} {4}'.format(test_zone.name, test_record.name,
                         test_record.ttl, test_record.type,
                         test_record.rrdatas[0]))
    self.AssertErrContains(
        'Record addition appended to transaction at [{0}].'.format(
            transaction_util.DEFAULT_PATH))

    with open(self.initial_transaction) as expected:
      expected_change = transaction_util.ChangeFromYamlFile(
          expected, api_version=self.api_version)
      expected_change.additions.append(test_record)
    with open(transaction_util.DEFAULT_PATH) as actual:
      actual_change = transaction_util.ChangeFromYamlFile(
          actual, api_version=self.api_version)
      self.assertEqual(expected_change, actual_change)
Exemple #9
0
 def testDomainWithoutTrailingDot(self):
   self._TransactionRemoveHelper(util_beta.GetRecordSets()[0],
                                 util_beta.GetRecordSets()[0].name.rstrip('.'))
Exemple #10
0
 def testTransactionRemoveDatum(self):
   self._TransactionRemoveHelper(util_beta.GetRecordSets()[0])
Exemple #11
0
 def testTransactionRemoveDifferentRecord(self):
   self._TransactionRemoveNonExistingHelper(
       util_beta.GetRecordSets()[0], util_beta.GetRecordSetsForExport()[:1])
Exemple #12
0
 def testTransactionRemoveNonExistingRecord(self):
   self._TransactionRemoveNonExistingHelper(util_beta.GetRecordSets()[0], [])