Esempio n. 1
0
 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()
Esempio n. 2
0
    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())
Esempio n. 3
0
 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()
Esempio n. 4
0
 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)
Esempio n. 5
0
 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())
Esempio n. 6
0
 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']]))
Esempio n. 7
0
 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']]))