def test_duplicate_hostname_in_different_networks_in_same_dc_should_not_pass( self): # noqa name = 'random.hostname.net' network = NetworkFactory( address='192.168.0.0/24', network_environment=NetworkEnvironmentFactory( data_center=DataCenterFactory(name='DC1'))) network1 = NetworkFactory( address='1.1.0.0/24', network_environment=NetworkEnvironmentFactory( data_center=DataCenterFactory(name='DC1'))) ip = IPAddressFactory(hostname=name, address='192.168.0.1', dhcp_expose=True) self.ip.hostname = name self.ip.address = '1.1.0.2' self.ip.dhcp_expose = True with self.assertRaises( ValidationError, msg='Hostname "{hostname}" is already exposed in DHCP in {dc}.' .format(hostname=name, dc=network.network_environment.data_center)): self.ip.validate_hostname_uniqueness_in_dc(name) with self.assertRaises( ValidationError, msg='Hostname "{hostname}" is already exposed in DHCP in {dc}.' .format(hostname=name, dc=network1.network_environment.data_center)): self.ip.clean()
def test_imported_object(self): """Test importer management command with ImportedObjects model.""" data_center = DataCenterFactory(name='CSV_test') data_center_content_type = ContentType.objects.get_for_model( DataCenter) ImportedObjects.objects.create(content_type=data_center_content_type, object_pk=data_center.pk, old_object_pk=1) server_room_csv = os.path.join(self.base_dir, 'tests/samples/server_room.csv') rack_csv = os.path.join(self.base_dir, 'tests/samples/rack.csv') management.call_command('importer', server_room_csv, type='file', model_name='ServerRoom', delimiter=',', map_imported_id_to_new_id=True) content_type = ContentType.objects.get_for_model(ServerRoom) imported_object_exists = ImportedObjects.objects.filter( content_type=content_type, old_object_pk=1).exists() self.assertTrue(imported_object_exists) management.call_command('importer', rack_csv, type='file', model_name='Rack', delimiter=',', map_imported_id_to_new_id=True) self.assertTrue(Rack.objects.filter(name="Rack_csv_test").exists())
def test_duplicate_hostnames_in_different_dcs_should_pass(self): name = 'random.hostname.net' network1 = NetworkFactory( address='1.1.0.0/24', network_environment=NetworkEnvironmentFactory( data_center=DataCenterFactory(name='DC1'))) network2 = NetworkFactory( address='192.168.0.0/24', network_environment=NetworkEnvironmentFactory( data_center=DataCenterFactory(name='DC2'))) ip = IPAddressFactory(hostname=name, address='1.1.0.1', dhcp_expose=True) self.ip.address = '192.168.0.1' self.ip.hostname = name self.ip.dhcp_expose = True self.ip.validate_hostname_uniqueness_in_dc(name) self.ip.clean()
def test_agent_should_send_confirmation(self): dc = DataCenterFactory() dhcp_server = DHCPServer.objects.create( ip='127.0.0.1', last_synchronized=None ) with Cache('/tmp/') as cache: manager = DHCPConfigManager( logger=logger, cache=cache, **self.default_params ) manager._send_sync_confirmation() dhcp_server.refresh_from_db() self.assertTrue(dhcp_server.last_synchronized)
def test_get_configuration_should_return_configuration(self, mode): dc = DataCenterFactory() params = self.default_params.copy() params.update({ 'dc': dc.name, }) with Cache('/tmp/') as cache: manager = DHCPConfigManager( logger=logger, cache=cache, **params ) data = manager._get_configuration(mode=mode) self.assertTrue('config generated by Ralph' in data.decode())
def test_dhcp_expose_for_existing_record_duplicate_hostname_should_not_pass( self): # noqa network = NetworkFactory( address='192.168.0.0/24', network_environment=NetworkEnvironmentFactory( data_center=DataCenterFactory(name='DC1'))) name = 'some.hostname' ip = IPAddressFactory(dhcp_expose=True, hostname=name, address='192.168.0.7').save() self.ip1.hostname = name self.ip1.address = '192.168.0.12' self.ip1.save() inline_data = { 'TOTAL_FORMS': 2, 'INITIAL_FORMS': 1, '0-id': self.eth1.id, '0-base_object': self.obj1.id, '0-label': 'eth10', '1-base_object': self.obj1.id, '1-hostname': name, '1-address': '192.168.0.33', '1-mac': '10:10:10:10:10:10', '1-label': 'eth10', '1-dhcp_expose': 'on', } data = { 'hostname': self.obj1.hostname, 'id': self.obj1.id, } data.update(self._prepare_inline_data(inline_data)) response = self.client.post(self.obj1.get_absolute_url(), data, follow=True) msg = 'Hostname "{hostname}" is already exposed in DHCP in {dc}'.format( # noqa hostname=self.ip1.hostname, dc=network.network_environment.data_center) self.assertIn('errors', response.context_data) self.assertTrue( any([msg in err for err in response.context_data['errors']]))
def test_dhcp_expose_for_new_record_duplicate_hostname_should_not_pass( self): # noqa network = NetworkFactory( address='127.0.0.0/24', network_environment=NetworkEnvironmentFactory( data_center=DataCenterFactory(name='DC1'))) self.test_dhcp_expose_for_new_record_should_pass( ) # generate duplicate obj2 = PolymorphicTestModel.objects.create(hostname='xyz') inline_data = { 'TOTAL_FORMS': 2, 'INITIAL_FORMS': 1, '0-id': self.eth1.id, '0-base_object': obj2.id, '0-mac': 'ff:ff:ff:ff:ff:ff', '0-label': 'eth10', '1-base_object': obj2.id, '1-hostname': self.ip1.hostname, '1-address': '127.0.0.3', '1-mac': '11:11:11:11:11:11', '1-label': 'eth10', '1-dhcp_expose': 'on', } data = { 'hostname': obj2.hostname, 'id': obj2.id, } data.update(self._prepare_inline_data(inline_data)) response = self.client.post(obj2.get_absolute_url(), data, follow=True) self.assertEqual(response.status_code, 200) msg = 'Hostname "{hostname}" is already exposed in DHCP in {dc}'.format( # noqa hostname=self.ip1.hostname, dc=network.network_environment.data_center) self.assertIn('errors', response.context_data) self.assertTrue( any([msg in err for err in response.context_data['errors']]))