Esempio n. 1
0
    def test_update_network_updates_eas_if_not_null(self):
        ref = 'infoblox_object_id'
        opts = 'infoblox_options'
        eas = 'some-eas'

        connector = mock.Mock()
        ib_network = objects.Network(connector, _ref=ref, options=opts)
        ibom = om.InfobloxObjectManager(connector)
        ibom.update_network_options(ib_network, eas)

        connector.update_object.assert_called_once_with(
            ref, {
                'options': opts,
                'extattrs': eas
            }, mock.ANY)
Esempio n. 2
0
    def test_has_networks(self):
        connector = mock.Mock()
        connector.get_object.return_value = None
        ibom = om.InfobloxObjectManager(connector)
        net_view_name = 'some-view'

        result = ibom.has_networks(net_view_name)

        matcher = PayloadMatcher({'network_view': net_view_name})
        connector.get_object.assert_called_once_with('network',
                                                     matcher,
                                                     return_fields=mock.ANY,
                                                     force_proxy=mock.ANY,
                                                     extattrs=None)
        self.assertEqual(False, result)
Esempio n. 3
0
    def test_create_required_ea_definitions(self):
        existing_ea_defs = [{'name': 'One'}, {'name': 'Two'}]
        additional_ea_defs = [{'name': 'Three'}]
        required_ea_defs = existing_ea_defs + additional_ea_defs

        connector = mock.Mock()
        connector.create_object.return_value = {}
        connector.get_object.return_value = existing_ea_defs

        ibom = om.InfobloxObjectManager(connector)
        created = ibom.create_required_ea_definitions(required_ea_defs)

        self.assertEqual(created[0], additional_ea_defs[0])
        connector.create_object.assert_called_once_with(
            'extensibleattributedef', additional_ea_defs[0], mock.ANY)
    def _check_bind_names_calls(self, args, expected_get, expected_update):
        connector = mock.Mock()
        connector.get_object.return_value = mock.MagicMock()

        ibom = om.InfobloxObjectManager(connector)

        ibom.bind_name_with_host_record(*args)
        connector.get_object.assert_called_once_with('record:host',
                                                     expected_get,
                                                     extattrs=None,
                                                     max_results=None,
                                                     force_proxy=mock.ANY,
                                                     return_fields=mock.ANY)
        connector.update_object.assert_called_once_with(
            mock.ANY, expected_update, mock.ANY)
Esempio n. 5
0
    def test_get_network_gets_network_object(self):
        connector = mock.Mock()
        connector.get_object.return_value = mock.MagicMock()

        ibom = om.InfobloxObjectManager(connector)

        net_view_name = 'test_dns_view_name'
        cidr = '192.168.0.0/24'

        ibom.get_network(net_view_name, cidr)

        matcher = PayloadMatcher({'network_view': net_view_name,
                                  'network': cidr})
        connector.get_object.assert_called_once_with(
            'network', matcher, extattrs=None, max_results=None,
            force_proxy=mock.ANY, return_fields=mock.ANY)
Esempio n. 6
0
    def _update_network_updates_eas(self, origina_ea, new_ea, merged_ea):
        ref = 'infoblox_object_id'
        opts = 'infoblox_options'
        connector = mock.Mock()
        ib_network = objects.Network(connector,
                                     _ref=ref,
                                     options=opts,
                                     extattrs=origina_ea)
        ibom = om.InfobloxObjectManager(connector)
        ibom.update_network_options(ib_network, new_ea)

        connector.update_object.assert_called_once_with(
            ref,
            {'options': opts,
             'extattrs': merged_ea},
            mock.ANY)
Esempio n. 7
0
    def test_delete_fixed_address_not_found(self):
        network_view = 'test_network_view'
        ip = '192.168.0.25'

        connector = mock.Mock()
        connector.get_object.return_value = None

        ibom = om.InfobloxObjectManager(connector)
        ibom.delete_fixed_address(network_view, ip)

        payload = {'network_view': network_view,
                   'ipv4addr': ip}
        connector.get_object.assert_called_once_with(
            'fixedaddress', payload, extattrs=None, max_results=None,
            return_fields=mock.ANY, force_proxy=mock.ANY)
        self.assertFalse(connector.delete_object.called)
    def test_create_dns_zone_with_grid_secondaries(self):
        dns_view_name = 'dns-view-name'
        fqdn = 'host.global.com'
        primary_dns_members = [
            objects.AnyMember(name='member_primary', _struct='memberserver')
        ]
        secondary_dns_members = [
            objects.AnyMember(name='member_secondary', _struct='memberserver')
        ]
        zone_format = 'IPV4'

        connector = mock.Mock()
        connector.get_object.return_value = None

        ibom = om.InfobloxObjectManager(connector)

        zone = ibom.create_dns_zone(dns_view_name,
                                    fqdn,
                                    primary_dns_members,
                                    secondary_dns_members,
                                    zone_format=zone_format)

        matcher = PayloadMatcher({'view': dns_view_name, 'fqdn': fqdn})
        connector.get_object.assert_called_once_with('zone_auth',
                                                     matcher,
                                                     return_fields=mock.ANY)

        payload = {
            'view':
            dns_view_name,
            'fqdn':
            fqdn,
            'zone_format':
            zone_format,
            'grid_primary': [{
                'name': primary_dns_members[0].name,
                '_struct': 'memberserver'
            }],
            'grid_secondaries': [{
                'name': member.name,
                '_struct': 'memberserver'
            } for member in secondary_dns_members]
        }
        connector.create_object.assert_called_once_with(
            'zone_auth', payload, mock.ANY)
        self.assertIsInstance(zone, objects.DNSZone)
Esempio n. 9
0
    def test_delete_network_deletes_infoblox_network(self):
        net_view = 'net-view-name'
        cidr = '192.168.1.0/24'

        connector = mock.Mock()
        connector.get_object.return_value = mock.MagicMock()

        ibom = om.InfobloxObjectManager(connector)

        ibom.delete_network(net_view, cidr)

        matcher = PayloadMatcher({'network_view': net_view,
                                  'network': cidr})
        connector.get_object.assert_called_once_with(
            'network', matcher, extattrs=None, max_results=None,
            force_proxy=mock.ANY, return_fields=mock.ANY)
        connector.delete_object.assert_called_once_with(mock.ANY)
Esempio n. 10
0
    def test_create_dns_view_creates_view_object(self):
        net_view_name = 'net-view-name'
        dns_view_name = 'dns-view-name'

        connector = mock.Mock()
        connector.get_object.return_value = None

        ibom = om.InfobloxObjectManager(connector)

        ibom.create_dns_view(net_view_name, dns_view_name)

        matcher = PayloadMatcher({'name': dns_view_name,
                                  'network_view': net_view_name})
        connector.get_object.assert_called_once_with(
            'view', matcher, return_fields=mock.ANY)
        connector.create_object.assert_called_once_with(
            'view', matcher, mock.ANY)
    def test_object_is_not_created_if_already_exists(self):
        net_view_name = 'test_dns_view_name'
        connector = mock.Mock()
        connector.create_object.return_value = mock.MagicMock()
        connector.get_object.return_value = [{
            '_ref': 'object-reference',
            'name': net_view_name
        }]

        ibom = om.InfobloxObjectManager(connector)
        ibom.create_network_view(net_view_name, self.EXT_ATTRS)

        matcher = PayloadMatcher({'name': net_view_name})
        connector.get_object.assert_called_once_with('networkview',
                                                     matcher,
                                                     return_fields=mock.ANY)
        assert not connector.create_object.called
Esempio n. 12
0
    def test_delete_all_associated_objects(self):
        a_rec_ref = ('record:a/ZG5zLmJpbmRfYSQuNC5jb20ubXlfem9uZSxuYW'
                     '1lLDE5Mi4xNjguMS41:name.my_zone.com/my_dns_view')
        reply_map = {
            'ipv4address': [{
                '_ref': ('ipv4address/Li5pcHY0X2FkZHJlc3MkMTky'
                         'LjE2OC4xLjEwLzE:192.168.1.10/my_view'),
                'objects': [a_rec_ref]
            }],
            a_rec_ref: {
                '_ref': a_rec_ref,
                'view': 'my_dns_view',
                'name': 'name.my_zone.com'
            },
        }

        def get_object(ref, *args, **kwargs):
            if ref in reply_map:
                return reply_map[ref]

        connector = mock.Mock()
        connector.get_object.side_effect = get_object
        ibom = om.InfobloxObjectManager(connector)
        delete_list = ['record:a']
        ibom.delete_all_associated_objects('some_view', '192.168.1.10',
                                           delete_list)

        payload = {'network_view': 'some_view', 'ip_address': '192.168.1.10'}
        calls = [
            mock.call('ipv4address',
                      payload,
                      extattrs=mock.ANY,
                      force_proxy=mock.ANY,
                      return_fields=mock.ANY),
            mock.call(a_rec_ref),
            mock.call('record:cname', {
                'view': 'my_dns_view',
                'canonical': 'name.my_zone.com'
            }),
            mock.call('record:txt', {
                'name': 'name.my_zone.com',
                'view': 'my_dns_view'
            })
        ]
        connector.get_object.assert_has_calls(calls)
        connector.delete_object.assert_called_once_with(a_rec_ref)
Esempio n. 13
0
    def test_delete_network_view_deletes_infoblox_object(self):
        net_view = 'net-view-name'

        connector = mock.Mock()
        connector.get_object.return_value = mock.MagicMock()

        ibom = om.InfobloxObjectManager(connector)

        ibom.delete_network_view(net_view)

        matcher = PayloadMatcher({'name': net_view})
        connector.get_object.assert_called_once_with('networkview',
                                                     matcher,
                                                     extattrs=None,
                                                     force_proxy=mock.ANY,
                                                     return_fields=mock.ANY)
        connector.delete_object.assert_called_once_with(mock.ANY)
Esempio n. 14
0
    def test_create_net_view_creates_network_view_object(self):
        connector = mock.Mock()
        connector.get_object.return_value = None
        connector.create_object.return_value = None

        ibom = om.InfobloxObjectManager(connector)

        net_view_name = 'test_net_view_name'
        ibom.create_network_view(net_view_name, self.EXT_ATTRS)

        get_matcher = PayloadMatcher({'name': net_view_name})
        create_matcher = PayloadMatcher({'name': net_view_name,
                                         'extattrs': self.EXT_ATTRS})
        connector.get_object.assert_called_once_with(
            'networkview', get_matcher, return_fields=mock.ANY)
        connector.create_object.assert_called_once_with(
            'networkview', create_matcher, mock.ANY)
Esempio n. 15
0
    def test_delete_host_record_deletes_host_record_object(self):
        connector = mock.Mock()
        connector.get_object.return_value = mock.MagicMock()

        ibom = om.InfobloxObjectManager(connector)

        dns_view_name = 'test_dns_view_name'
        ip_address = '192.168.0.254'

        ibom.delete_host_record(dns_view_name, ip_address)

        matcher = PayloadMatcher({'view': dns_view_name,
                                  PayloadMatcher.ANYKEY: ip_address})
        connector.get_object.assert_called_once_with(
            'record:host', matcher, extattrs=None, max_results=None,
            force_proxy=mock.ANY, return_fields=mock.ANY)
        connector.delete_object.assert_called_once_with(mock.ANY)
Esempio n. 16
0
    def test_delete_object_by_ref(self):
        """Verify that exception would not be raised for delete by reference.

        """
        ref = mock.Mock()

        # Create an exception object instance with dummy error message.
        exception_kwargs = {'ref': ref, 'content': 'Not Found', 'code': 404}

        err = exceptions.InfobloxCannotDeleteObject(
            'specified object not found', **exception_kwargs)

        connector = mock.Mock()
        connector.delete_object.side_effect = err

        ibom = om.InfobloxObjectManager(connector)
        ibom.delete_object_by_ref(ref)
        connector.delete_object.assert_called_once_with(ref)
    def test_create_ea_definition(self):
        connector = mock.Mock()
        connector.create_object.return_value = {}
        ea_def = {
            'name': 'EA Test',
            'type': 'ENUM',
            'list_values': [{
                'value': 'True'
            }, {
                'value': 'False'
            }]
        }

        ibom = om.InfobloxObjectManager(connector)
        ibom.create_ea_definition(ea_def)

        connector.create_object.assert_called_once_with(
            'extensibleattributedef', ea_def, mock.ANY)
Esempio n. 18
0
    def test_delete_ip_range_deletes_infoblox_object(self):
        net_view = 'net-view-name'
        start_ip = '192.168.1.1'
        end_ip = '192.168.1.123'

        connector = mock.Mock()
        connector.get_object.return_value = mock.MagicMock()

        ibom = om.InfobloxObjectManager(connector)

        ibom.delete_ip_range(net_view, start_ip, end_ip)

        matcher = PayloadMatcher({'start_addr': start_ip,
                                  'network_view': net_view})
        connector.get_object.assert_called_once_with(
            'range', matcher, extattrs=None, max_results=None,
            force_proxy=mock.ANY, return_fields=mock.ANY)
        connector.delete_object.assert_called_once_with(mock.ANY)
Esempio n. 19
0
    def test_find_hostname(self):
        dns_view_name = 'dns-view-name'
        network_view_name = 'network-view-name'
        fqdn = 'host.global.com'
        ip = '192.168.1.1'

        connector = mock.Mock()
        connector.get_object.return_value = mock.MagicMock()
        ibom = om.InfobloxObjectManager(connector)

        ibom.find_hostname(dns_view_name, fqdn, ip, network_view_name)

        connector.get_object.assert_called_once_with(
            'record:host',
            {'view': dns_view_name, 'name': fqdn, 'ipv4addr': ip,
             'network_view': network_view_name},
            extattrs=None, force_proxy=mock.ANY, return_fields=mock.ANY,
            max_results=None)
Esempio n. 20
0
    def test_create_fixed_address_for_given_ip(self):
        network_view = 'test_network_view'
        ip = '192.168.0.1'
        mac = 'aa:bb:cc:dd:ee:ff'

        exp_payload = {'network_view': network_view,
                       'extattrs': self.EXT_ATTRS,
                       'ipv4addr': ip,
                       'mac': mac}

        connector = mock.Mock()
        connector.create_object.return_value = exp_payload.copy()

        ibom = om.InfobloxObjectManager(connector)
        ibom.create_fixed_address_for_given_ip(network_view, mac,
                                               ip, self.EXT_ATTRS)

        connector.create_object.assert_called_once_with('fixedaddress',
                                                        exp_payload,
                                                        mock.ANY)
    def test_create_host_record_range_create_host_record_object(self):
        dns_view_name = 'test_dns_view_name'
        zone_auth = 'test.dns.zone.com'
        hostname = 'test_hostname'
        mac = 'aa:bb:cc:dd:ee:ff'
        net_view_name = 'test_net_view_name'
        first_ip = '192.168.0.1'
        last_ip = '192.168.0.254'
        use_dhcp = True
        use_dns = False

        host_record = {'_ref': 'host_record_ref'}
        connector = mock.Mock()
        connector.create_object.return_value = host_record

        ibom = om.InfobloxObjectManager(connector)

        ibom.create_host_record_from_range(dns_view_name, net_view_name,
                                           zone_auth, hostname, mac, first_ip,
                                           last_ip, self.EXT_ATTRS, use_dhcp,
                                           use_dns)

        next_ip = \
            'func:nextavailableip:192.168.0.1-192.168.0.254,test_net_view_name'
        exp_payload = {
            'name':
            'test_hostname.test.dns.zone.com',
            'configure_for_dns':
            use_dns,
            'view':
            dns_view_name,
            'extattrs':
            self.EXT_ATTRS,
            'ipv4addrs': [{
                'mac': mac,
                'configure_for_dhcp': use_dhcp,
                'ipv4addr': next_ip
            }]
        }
        connector.create_object.assert_called_once_with(
            'record:host', exp_payload, mock.ANY)
    def test_member_is_assigned_as_list_on_network_create(self):
        net_view = 'net-view-name'
        cidr = '192.168.1.0/24'
        nameservers = []
        members = [
            objects.AnyMember(name='just-a-single-member-ip',
                              ip='192.168.1.25',
                              _struct='dhcpmember')
        ]
        gateway_ip = '192.168.1.1'
        dhcp_trel_ip = '8.8.8.8'
        extattrs = None
        expected_payload = {
            'members': [{
                'ipv4addr': '192.168.1.25',
                '_struct': 'dhcpmember',
                'name': 'just-a-single-member-ip'
            }],
            'network_view':
            net_view,
            'network':
            cidr,
            'options': [{
                'name': 'routers',
                'value': gateway_ip
            }, {
                'name': 'dhcp-server-identifier',
                'value': dhcp_trel_ip,
                'num': 54
            }]
        }

        connector = mock.Mock()
        ibom = om.InfobloxObjectManager(connector)

        ibom.create_network(net_view, cidr, nameservers, members, gateway_ip,
                            dhcp_trel_ip, extattrs)

        assert not connector.get_object.called
        connector.create_object.assert_called_once_with(
            'network', expected_payload, mock.ANY)
Esempio n. 23
0
    def test_throws_network_not_available_on_get_network(self):
        connector = mock.Mock()
        connector.get_object.return_value = None

        ibom = om.InfobloxObjectManager(connector)

        net_view_name = 'test_dns_view_name'
        cidr = '192.168.0.0/24'

        self.assertRaises(exceptions.InfobloxNetworkNotAvailable,
                          ibom.get_network, net_view_name, cidr)

        matcher = PayloadMatcher({
            'network_view': net_view_name,
            'network': cidr
        })
        connector.get_object.assert_called_once_with('network',
                                                     matcher,
                                                     extattrs=mock.ANY,
                                                     force_proxy=mock.ANY,
                                                     return_fields=mock.ANY)
Esempio n. 24
0
    def test_unbind_names_with_a_record(self):
        dns_view_name = 'dns-view-name'
        name = 'host1'
        ip = '192.168.1.1'
        bind_list = ['record:a', 'record:aaaa', 'record:ptr']

        def get_object(obj_type, payload=None, return_fields=None,
                       extattrs=None, force_proxy=False, max_results=None):
            data_dict = payload.copy()
            data_dict['_ref'] = 'some-ref/' + obj_type
            return [data_dict]

        connector = mock.Mock()
        connector.get_object.side_effect = get_object

        ibom = om.InfobloxObjectManager(connector)
        ibom.unbind_name_from_record_a(dns_view_name, ip, name, bind_list)

        delete_calls = [mock.call('some-ref/record:a'),
                        mock.call('some-ref/record:ptr')]
        connector.delete_object.assert_has_calls(delete_calls)
    def test_find_host_records_by_mac(self):
        dns_view_name = 'dns-view-name'
        network_view_name = 'network-view-name'
        mac = '11:22:33:44:55:66'
        host_name = 'test_host_name'

        connector = mock.Mock()
        connector.get_object.return_value = [{'host': host_name}]
        ibom = om.InfobloxObjectManager(connector)

        ibom.find_host_records_by_mac(dns_view_name, mac, network_view_name)

        assert connector.get_object.call_args_list == [
            mock.call('record:host', {
                'view': dns_view_name,
                'mac': mac,
                'network_view': network_view_name
            },
                      extattrs=None,
                      force_proxy=mock.ANY,
                      return_fields=mock.ANY,
                      max_results=None),
            mock.call('record:host_ipv6addr', {
                'network_view': 'network-view-name',
                'duid': '11:22:33:44:55:66'
            },
                      extattrs=None,
                      force_proxy=mock.ANY,
                      return_fields=mock.ANY,
                      max_results=None),
            mock.call('record:host', {
                'name': 'test_host_name',
                'network_view': 'network-view-name',
                'view': 'dns-view-name'
            },
                      extattrs=None,
                      force_proxy=mock.ANY,
                      return_fields=mock.ANY,
                      max_results=None)
        ]
    def test_update_dns_zone_attrs(self):
        dns_view_name = 'dns-view-name'
        fqdn = 'host.global.com'
        zone_ref = 'zone_ref'
        old_attrs = {'old_key': {'value': 'old_value'}}
        new_attrs = {'new_key': {'value': 'new_value'}}
        zone = {
            '_ref': zone_ref,
            'view': dns_view_name,
            'fqdn': fqdn,
            'zone_format': 'FORWARD',
            'ns_group': 'test_group',
            'extattrs': old_attrs
        }

        connector = mock.Mock()
        connector.get_object.return_value = [zone]

        return_fields = [
            'extattrs', 'fqdn', 'view', 'zone_format', 'ns_group', 'prefix',
            'grid_primary', 'grid_secondaries'
        ]
        ibom = om.InfobloxObjectManager(connector)
        ibom.update_dns_zone_attrs(dns_view_name, fqdn, new_attrs)
        connector.get_object.assert_called_once_with(
            'zone_auth', {
                'fqdn': 'host.global.com',
                'view': 'dns-view-name'
            },
            return_fields=return_fields,
            extattrs=None,
            force_proxy=False,
            max_results=None)
        connector.update_object.assert_called_once_with(
            zone_ref, {
                'extattrs': new_attrs,
                'ns_group': 'test_group',
                'view': 'dns-view-name',
                'zone_format': 'FORWARD'
            }, return_fields)
Esempio n. 27
0
    def test_create_ip_range_creates_range_object(self):
        net_view = 'net-view-name'
        start_ip = '192.168.1.1'
        end_ip = '192.168.1.123'
        disable = False

        connector = mock.Mock()
        connector.get_object.return_value = None

        ibom = om.InfobloxObjectManager(connector)
        ibom.create_ip_range(net_view, start_ip, end_ip, None, disable,
                             self.EXT_ATTRS)

        # Validate that IPRange is created without searching it first
        assert not connector.get_object.called
        matcher = PayloadMatcher({'start_addr': start_ip,
                                  'end_addr': end_ip,
                                  'network_view': net_view,
                                  'extattrs': self.EXT_ATTRS,
                                  'disable': disable})
        connector.create_object.assert_called_once_with('range', matcher,
                                                        mock.ANY)
    def test_delete_objects_associated_with_a_record(self):
        name = 'name.my_zone.com'
        view = 'my_dns_view'
        delete_list = ['record:cname', 'record:txt']
        reply_map = {
            'record:cname': [{
                '_ref': 'record:cname/some-ref'
            }, {
                '_ref': 'record:cname/some-ref2'
            }],
            'record:txt': [{
                '_ref': 'record:txt/txt-ref'
            }]
        }

        connector = mock.Mock()
        get_object = self._mock_for_get_connector(reply_map)
        connector.get_object.side_effect = get_object
        ibom = om.InfobloxObjectManager(connector)
        ibom.delete_objects_associated_with_a_record(name, view, delete_list)

        calls = [
            mock.call('record:cname', {
                'view': 'my_dns_view',
                'canonical': 'name.my_zone.com'
            }),
            mock.call('record:txt', {
                'name': 'name.my_zone.com',
                'view': 'my_dns_view'
            })
        ]
        connector.get_object.assert_has_calls(calls, any_order=True)
        delete_calls = [
            mock.call('record:cname/some-ref'),
            mock.call('record:cname/some-ref2'),
            mock.call('record:txt/txt-ref')
        ]
        connector.delete_object.assert_has_calls(delete_calls, any_order=True)
    def test_create_host_record_creates_host_record_object(self):
        dns_view_name = 'test_dns_view_name'
        zone_auth = 'test.dns.zone.com'
        hostname = 'test_hostname'
        ip = '192.168.0.1'
        mac = 'aa:bb:cc:dd:ee:ff'
        use_dhcp = True
        use_dns = True

        host_record = {'_ref': 'host_record_ref'}
        connector = mock.Mock()
        connector.create_object.return_value = host_record

        ibom = om.InfobloxObjectManager(connector)

        ibom.create_host_record_for_given_ip(dns_view_name, zone_auth,
                                             hostname, mac, ip, self.EXT_ATTRS,
                                             use_dhcp, use_dns)

        exp_payload = {
            'name':
            'test_hostname.test.dns.zone.com',
            'view':
            dns_view_name,
            'configure_for_dns':
            use_dns,
            'extattrs':
            self.EXT_ATTRS,
            'ipv4addrs': [{
                'mac': mac,
                'configure_for_dhcp': use_dhcp,
                'ipv4addr': ip
            }]
        }

        connector.create_object.assert_called_once_with(
            'record:host', exp_payload, mock.ANY)
Esempio n. 30
0
    def test_create_fixed_address_from_cidr(self):
        network_view = 'test_network_view'
        cidr = '192.168.0.0/24'
        mac = 'aa:bb:cc:dd:ee:ff'

        result = {'network_view': network_view,
                  'extattrs': self.EXT_ATTRS,
                  'ipv4addr': '192.168.0.12',
                  'mac': mac}

        connector = mock.Mock()
        connector.create_object.return_value = result.copy()

        ibom = om.InfobloxObjectManager(connector)
        ibom.create_fixed_address_from_cidr(network_view, mac, cidr,
                                            self.EXT_ATTRS)

        next_ip = 'func:nextavailableip:192.168.0.0/24,test_network_view'
        exp_payload = result.copy()
        exp_payload['ipv4addr'] = next_ip

        connector.create_object.assert_called_once_with('fixedaddress',
                                                        exp_payload,
                                                        mock.ANY)