Ejemplo n.º 1
0
    def test_populate_traffic_directors_both(self, mock):
        provider = DynProvider('test',
                               'cust',
                               'user',
                               'pass',
                               traffic_directors_enabled=True)

        # both traffic director and regular, regular is ignored
        mock.side_effect = [
            # get traffic directors
            self.traffic_directors_reponse,
            # get traffic director
            self.traffic_director_response,
            # get zone
            {
                'data': {}
            },
            # get records
            self.records_response
        ]
        got = Zone('unit.tests.', [])
        provider.populate(got)
        self.assertEquals(1, len(got.records))
        self.assertFalse(self.expected_geo.changes(got, provider))
        mock.assert_has_calls([
            call('/DSF/2ERWXQNsb_IKG2YZgYqkPvk0PBM/', 'GET',
                 {'pending_changes': 'Y'}),
            call('/Zone/unit.tests/', 'GET', {}),
            call('/AllRecord/unit.tests/unit.tests./', 'GET', {'detail': 'Y'}),
        ])
Ejemplo n.º 2
0
    def test_populate_traffic_directors_regular(self, mock):
        provider = DynProvider('test',
                               'cust',
                               'user',
                               'pass',
                               traffic_directors_enabled=True)

        # only regular
        mock.side_effect = [
            # get traffic directors
            {
                'data': []
            },
            # get zone
            {
                'data': {}
            },
            # get records
            self.records_response
        ]
        got = Zone('unit.tests.', [])
        provider.populate(got)
        self.assertEquals(1, len(got.records))
        self.assertFalse(self.expected_regular.changes(got, provider))
        mock.assert_has_calls([
            call('/DSF/', 'GET', {'detail': 'Y'}),
            call('/Zone/unit.tests/', 'GET', {}),
            call('/AllRecord/unit.tests/unit.tests./', 'GET', {'detail': 'Y'}),
        ])
Ejemplo n.º 3
0
    def test_populate_traffic_directors_empty(self, mock):
        provider = DynProvider('test',
                               'cust',
                               'user',
                               'pass',
                               traffic_directors_enabled=True)

        # empty all around
        mock.side_effect = [
            # get traffic directors
            {
                'data': []
            },
            # get zone
            {
                'data': {}
            },
            # get records
            {
                'data': {}
            },
        ]
        got = Zone('unit.tests.', [])
        provider.populate(got)
        self.assertEquals(0, len(got.records))
        mock.assert_has_calls([
            call('/DSF/', 'GET', {'detail': 'Y'}),
            call('/Zone/unit.tests/', 'GET', {}),
            call('/AllRecord/unit.tests/unit.tests./', 'GET', {'detail': 'Y'}),
        ])
Ejemplo n.º 4
0
    def test_populate_traffic_director_busted(self, mock):
        provider = DynProvider('test',
                               'cust',
                               'user',
                               'pass',
                               traffic_directors_enabled=True)

        busted_traffic_director_response = {
            "status":
            "success",
            "data": {
                "notifiers": [],
                "rulesets": [],
                "ttl": "300",
                "active": "Y",
                "service_id": "oIRZ4lM-W64NUelJGuzuVziZ4MI",
                "nodes": [{
                    "fqdn": "unit.tests",
                    "zone": "unit.tests"
                }],
                "pending_change": "",
                "label": "unit.tests.:A"
            },
            "job_id":
            3376642606,
            "msgs": [{
                "INFO": "detail: Here is your service",
                "LVL": "INFO",
                "ERR_CD": None,
                "SOURCE": "BLL"
            }]
        }
        # busted traffic director
        mock.side_effect = [
            # get traffic directors
            self.traffic_directors_reponse,
            # get traffic director
            busted_traffic_director_response,
            # get zone
            {
                'data': {}
            },
            # get records
            {
                'data': {}
            },
        ]
        got = Zone('unit.tests.', [])
        provider.populate(got)
        self.assertEquals(1, len(got.records))
        # we expect a change here for the record, the values aren't important,
        # so just compare set contents (which does name and type)
        self.assertEquals(self.expected_geo.records, got.records)
        mock.assert_has_calls([
            call('/DSF/2ERWXQNsb_IKG2YZgYqkPvk0PBM/', 'GET',
                 {'pending_changes': 'Y'}),
            call('/Zone/unit.tests/', 'GET', {}),
            call('/AllRecord/unit.tests/unit.tests./', 'GET', {'detail': 'Y'}),
        ])
Ejemplo n.º 5
0
    def test_populate_non_existent(self, execute_mock):
        provider = DynProvider('test', 'cust', 'user', 'pass')

        # Test Zone create
        execute_mock.side_effect = [
            DynectGetError('foo'),
        ]
        got = Zone('unit.tests.', [])
        provider.populate(got)
        execute_mock.assert_has_calls([
            call('/Zone/unit.tests/', 'GET', {}),
        ])
        self.assertEquals(set(), got.records)
Ejemplo n.º 6
0
    def test_populate(self, execute_mock):
        provider = DynProvider('test', 'cust', 'user', 'pass')

        # Test Zone create
        execute_mock.side_effect = [
            # get Zone
            {
                'data': {}
            },
            # get_all_records
            {
                'data': {
                    'a_records': [{
                        'fqdn': 'www.unit.tests',
                        'rdata': {
                            'address': '1.2.3.4'
                        },
                        'record_id': 1,
                        'record_type': 'A',
                        'ttl': 300,
                        'zone': 'unit.tests',
                    }],
                    'alias_records': [{
                        'fqdn': 'unit.tests',
                        'rdata': {
                            'alias': 'www.unit.tests.'
                        },
                        'record_id': 2,
                        'record_type': 'ALIAS',
                        'ttl': 300,
                        'zone': 'unit.tests',
                    }],
                }
            }
        ]
        got = Zone('unit.tests.', [])
        provider.populate(got)
        execute_mock.assert_has_calls([
            call('/Zone/unit.tests/', 'GET', {}),
            call('/AllRecord/unit.tests/unit.tests./', 'GET', {'detail': 'Y'})
        ])
        changes = self.expected.changes(got, SimpleProvider())
        self.assertEquals([], changes)
Ejemplo n.º 7
0
    def test_populate(self, execute_mock):
        provider = DynProvider('test', 'cust', 'user', 'pass')

        # Test Zone create
        execute_mock.side_effect = [
            # get Zone
            {
                'data': {}
            },
            # get_all_records
            {
                'data': {
                    'a_records': [{
                        'fqdn': 'unit.tests',
                        'rdata': {
                            'address': '1.2.3.4'
                        },
                        'record_id': 1,
                        'record_type': 'A',
                        'ttl': 300,
                        'zone': 'unit.tests',
                    }],
                    'cname_records': [{
                        'fqdn': 'cname.unit.tests',
                        'rdata': {
                            'cname': 'unit.tests.'
                        },
                        'record_id': 2,
                        'record_type': 'CNAME',
                        'ttl': 301,
                        'zone': 'unit.tests',
                    }],
                    'ns_records': [{
                        'fqdn': 'unit.tests',
                        'rdata': {
                            'nsdname': 'ns1.p10.dynect.net.'
                        },
                        'record_id': 254597562,
                        'record_type': 'NS',
                        'service_class': '',
                        'ttl': 3600,
                        'zone': 'unit.tests'
                    }, {
                        'fqdn': 'unit.tests',
                        'rdata': {
                            'nsdname': 'ns2.p10.dynect.net.'
                        },
                        'record_id': 254597563,
                        'record_type': 'NS',
                        'service_class': '',
                        'ttl': 3600,
                        'zone': 'unit.tests'
                    }, {
                        'fqdn': 'unit.tests',
                        'rdata': {
                            'nsdname': 'ns3.p10.dynect.net.'
                        },
                        'record_id': 254597564,
                        'record_type': 'NS',
                        'service_class': '',
                        'ttl': 3600,
                        'zone': 'unit.tests'
                    }, {
                        'fqdn': 'unit.tests',
                        'rdata': {
                            'nsdname': 'ns4.p10.dynect.net.'
                        },
                        'record_id': 254597565,
                        'record_type': 'NS',
                        'service_class': '',
                        'ttl': 3600,
                        'zone': 'unit.tests'
                    }, {
                        'fqdn': 'sub.unit.tests',
                        'rdata': {
                            'nsdname': 'ns3.p10.dynect.net.'
                        },
                        'record_id': 254597564,
                        'record_type': 'NS',
                        'service_class': '',
                        'ttl': 3600,
                        'zone': 'unit.tests'
                    }, {
                        'fqdn': 'sub.unit.tests',
                        'rdata': {
                            'nsdname': 'ns3.p10.dynect.net.'
                        },
                        'record_id': 254597564,
                        'record_type': 'NS',
                        'service_class': '',
                        'ttl': 3600,
                        'zone': 'unit.tests'
                    }],
                    'mx_records': [{
                        'fqdn': 'unit.tests',
                        'rdata': {
                            'exchange': 'smtp-1.unit.tests.',
                            'preference': 10
                        },
                        'record_id': 3,
                        'record_type': 'MX',
                        'ttl': 302,
                        'zone': 'unit.tests',
                    }, {
                        'fqdn': 'unit.tests',
                        'rdata': {
                            'exchange': 'smtp-2.unit.tests.',
                            'preference': 20
                        },
                        'record_id': 4,
                        'record_type': 'MX',
                        'ttl': 302,
                        'zone': 'unit.tests',
                    }],
                    'naptr_records': [{
                        'fqdn': 'naptr.unit.tests',
                        'rdata': {
                            'flags': 'U',
                            'order': 100,
                            'preference': 101,
                            'regexp': '!^.*$!sip:[email protected]!',
                            'replacement': '.',
                            'services': 'SIP+D2U'
                        },
                        'record_id': 5,
                        'record_type': 'MX',
                        'ttl': 303,
                        'zone': 'unit.tests',
                    }, {
                        'fqdn': 'naptr.unit.tests',
                        'rdata': {
                            'flags': 'U',
                            'order': 200,
                            'preference': 201,
                            'regexp': '!^.*$!sip:[email protected]!',
                            'replacement': '.',
                            'services': 'SIP+D2U'
                        },
                        'record_id': 6,
                        'record_type': 'MX',
                        'ttl': 303,
                        'zone': 'unit.tests',
                    }],
                    'ptr_records': [{
                        'fqdn': 'ptr.unit.tests',
                        'rdata': {
                            'ptrdname': 'xx.unit.tests.'
                        },
                        'record_id': 7,
                        'record_type': 'PTR',
                        'ttl': 304,
                        'zone': 'unit.tests',
                    }],
                    'soa_records': [{
                        'fqdn': 'unit.tests',
                        'rdata': {
                            'txtdata':
                            'ns1.p16.dynect.net. '
                            'hostmaster.unit.tests. 4 3600 600 604800 1800'
                        },
                        'record_id': 99,
                        'record_type': 'SOA',
                        'ttl': 299,
                        'zone': 'unit.tests',
                    }],
                    'spf_records': [{
                        'fqdn': 'spf.unit.tests',
                        'rdata': {
                            'txtdata': 'v=spf1 ip4:192.168.0.1/16-all'
                        },
                        'record_id': 8,
                        'record_type': 'SPF',
                        'ttl': 305,
                        'zone': 'unit.tests',
                    }, {
                        'fqdn': 'spf.unit.tests',
                        'rdata': {
                            'txtdata': 'v=spf1 -all'
                        },
                        'record_id': 8,
                        'record_type': 'SPF',
                        'ttl': 305,
                        'zone': 'unit.tests',
                    }],
                    'sshfp_records': [{
                        'fqdn': 'unit.tests',
                        'rdata': {
                            'algorithm': 1,
                            'fingerprint':
                            'bf6b6825d2977c511a475bbefb88aad54a92ac73',
                            'fptype': 1
                        },
                        'record_id': 9,
                        'record_type': 'SSHFP',
                        'ttl': 306,
                        'zone': 'unit.tests',
                    }],
                    'srv_records': [{
                        'fqdn': '_srv._tcp.unit.tests',
                        'rdata': {
                            'port': 10,
                            'priority': 11,
                            'target': 'foo-1.unit.tests.',
                            'weight': 12
                        },
                        'record_id': 10,
                        'record_type': 'SRV',
                        'ttl': 307,
                        'zone': 'unit.tests',
                    }, {
                        'fqdn': '_srv._tcp.unit.tests',
                        'rdata': {
                            'port': 20,
                            'priority': 21,
                            'target': 'foo-2.unit.tests.',
                            'weight': 22
                        },
                        'record_id': 11,
                        'record_type': 'SRV',
                        'ttl': 307,
                        'zone': 'unit.tests',
                    }],
                    'caa_records': [{
                        'fqdn': 'unit.tests',
                        'rdata': {
                            'flags': 0,
                            'tag': 'issue',
                            'value': 'ca.unit.tests'
                        },
                        'record_id': 12,
                        'record_type': 'cAA',
                        'ttl': 308,
                        'zone': 'unit.tests',
                    }],
                }
            }
        ]
        got = Zone('unit.tests.', [])
        provider.populate(got)
        execute_mock.assert_has_calls([
            call('/Zone/unit.tests/', 'GET', {}),
            call('/AllRecord/unit.tests/unit.tests./', 'GET', {'detail': 'Y'})
        ])
        changes = self.expected.changes(got, SimpleProvider())
        self.assertEquals([], changes)