Exemple #1
0
 def test_find_registry_for_container_by_name(self):
     config = self._get_config('test_find_registry')
     c = maestro.Conductor(config)
     container = c.containers['foo1']
     registry = plays.tasks.LoginTask.registry_for_container(
         container, c.registries)
     self.assertEqual(registry, c.registries['quay.io'])
Exemple #2
0
 def test_find_registry_for_container_not_found(self):
     config = self._get_config('test_find_registry')
     c = maestro.Conductor(config)
     container = c.containers['foo3']
     registry = plays.tasks.LoginTask.registry_for_container(
         container, c.registries)
     self.assertEqual(registry, None)
Exemple #3
0
 def test_volumes_from_unknown(self):
     config = self._get_config('test_volumes_from_unknown')
     six.assertRaisesRegex(self,
             exceptions.InvalidVolumeConfigurationException,
             'Unknown container instance-2 to get volumes from '
             'for instance-1!',
             lambda: maestro.Conductor(config))
Exemple #4
0
 def test_volumes_parsing(self):
     config = self._get_config('test_volumes')
     c = maestro.Conductor(config)
     instance1 = c.containers['instance-1']
     instance2 = c.containers['instance-2']
     self.assertEqual(instance1.get_volumes(), set(['/in1', '/in2']))
     self.assertEqual(instance2.get_volumes(), set(['/in3']))
     self.assertEqual(instance2.volumes_from, set([instance1.name]))
Exemple #5
0
 def test_ignore_errors_wraps_with_non_failing_auditor(self):
     config = self._get_config('auditor_ignore_errors')
     c = maestro.Conductor(config)
     self.assertTrue(len(c.auditor.get_auditors()), 2)
     self.assertTrue(isinstance(c.auditor.get_auditors()[0],
                                maestro.audit._AlwaysFailAuditor))
     self.assertTrue(isinstance(c.auditor.get_auditors()[1],
                                maestro.audit.NonFailingAuditor))
Exemple #6
0
 def test_container_filters_container_and_ship_name(self):
     config = self._get_config('container_filter')
     c = maestro.Conductor(config)
     containers = c._to_containers(['webapp', 'webapp1'], True, '*-b',
                                   'ship*2')
     self.assertEqual(len(containers), 2)
     container_names = set([c.name for c in containers])
     self.assertEqual(container_names, {'webapp-b', 'webapp1-b'})
Exemple #7
0
 def test_volumes_from_adds_dependency(self):
     config = self._get_config('test_volumes_from_adds_dependency')
     c = maestro.Conductor(config)
     self.assertEqual(len(c.services), 2)
     self.assertEqual(len(c.containers), 2)
     self.assertEqual(len(list(c.services['myservice'].containers)), 1)
     self.assertEqual(c.services['myservice'].dependencies,
                      set([c.services['mydata']]))
     self.assertEqual(c.services['myservice'].requires,
                      set([c.services['mydata']]))
Exemple #8
0
    def test_ship_parsing(self):
        config = self._get_config('test_ships')
        c = maestro.Conductor(config)
        self.assertEqual(c.ships['ship1'].ip, '10.0.0.1')
        self.assertEqual(c.ships['ship1'].endpoint, '192.168.10.1')
        self.assertTrue('192.168.10.1' in c.ships['ship1'].backend.base_url)

        self.assertEqual(c.ships['ship2'].ip, '10.0.0.2')
        self.assertEqual(c.ships['ship2'].endpoint, '10.0.0.2')
        self.assertTrue('1234' in c.ships['ship2'].backend.base_url)
Exemple #9
0
 def test_missing_env_name(self):
     config = self._get_config('test_missing_envname')
     self.assertRaisesRegexp(exceptions.EnvironmentConfigurationException,
                             'Environment name is missing',
                             lambda: maestro.Conductor(config))
Exemple #10
0
 def test_env_name(self):
     config = self._get_config('test_envname')
     c = maestro.Conductor(config)
     self.assertEqual(c.env_name, 'test')
     foo1 = c.containers['foo-1']
     self.assertEqual(foo1.env['MAESTRO_ENVIRONMENT_NAME'], 'test')
Exemple #11
0
 def test_volume_conflict_volumes_from(self):
     config = self._get_config('test_volume_conflict_volumes_from')
     self.assertRaisesRegexp(
         exceptions.InvalidVolumeConfigurationException,
         'Volume conflicts between instance-2 and instance-1: /in1!',
         lambda: maestro.Conductor(config))
Exemple #12
0
 def test_container_filters_ship_name(self):
     config = self._get_config('container_filter')
     c = maestro.Conductor(config)
     containers = c._to_containers(['webapp'], True, None, 'ship*2')
     self.assertEqual(len(containers), 1)
     self.assertEqual(containers[0].name, 'webapp-b')
Exemple #13
0
    def test_envfiles(self):
        config = self._get_config('test_envfiles')
        c = maestro.Conductor(config)
        self.assertEqual(c.services['s1'].env, {
            'MAESTRO_ENVIRONMENT_NAME': 'test-envfiles',
            'SERVICE_NAME': 's1',
            'SOME_ENV': 'value',
            'OVERRIDE': 'dog'
        })
        self.assertEqual(c.containers['s1a'].env, {
            'MAESTRO_ENVIRONMENT_NAME': 'test-envfiles',
            'SERVICE_NAME': 's1',
            'CONTAINER_NAME': 's1a',
            'CONTAINER_HOST_ADDRESS': 'localhost',
            'CONTAINER_HOST_ADDRESS': 'localhost',
            'DOCKER_IMAGE': 'ubuntu',
            'DOCKER_TAG': 'latest',
            'S1_INSTANCES': 's1a,s1b',
            'S1_S1A_HOST': 'localhost',
            'S1_S1B_HOST': 'localhost',
            'SOME_ENV': 'value',
            'OVERRIDE': 'dog'
        })
        self.assertEqual(c.containers['s1b'].env, {
            'MAESTRO_ENVIRONMENT_NAME': 'test-envfiles',
            'SERVICE_NAME': 's1',
            'CONTAINER_NAME': 's1b',
            'CONTAINER_HOST_ADDRESS': 'localhost',
            'CONTAINER_HOST_ADDRESS': 'localhost',
            'DOCKER_IMAGE': 'ubuntu',
            'DOCKER_TAG': 'latest',
            'S1_INSTANCES': 's1a,s1b',
            'S1_S1A_HOST': 'localhost',
            'S1_S1B_HOST': 'localhost',
            'SOME_ENV': 'value',
            'OVERRIDE': 'giraffe'
        })

        self.assertEqual(c.services['s2'].env, {
            'MAESTRO_ENVIRONMENT_NAME': 'test-envfiles',
            'SERVICE_NAME': 's2',
            'SOME_ENV': 'value',
            'OVERRIDE': 'giraffe'
        })
        self.assertEqual(c.containers['s2a'].env, {
            'MAESTRO_ENVIRONMENT_NAME': 'test-envfiles',
            'SERVICE_NAME': 's2',
            'CONTAINER_NAME': 's2a',
            'CONTAINER_HOST_ADDRESS': 'localhost',
            'DOCKER_IMAGE': 'ubuntu',
            'DOCKER_TAG': 'latest',
            'S2_INSTANCES': 's2a,s2b',
            'S2_S2A_HOST': 'localhost',
            'S2_S2B_HOST': 'localhost',
            'SOME_ENV': 'value',
            'OVERRIDE': 'giraffe'
        })
        self.assertEqual(c.containers['s2b'].env, {
            'MAESTRO_ENVIRONMENT_NAME': 'test-envfiles',
            'SERVICE_NAME': 's2',
            'CONTAINER_NAME': 's2b',
            'CONTAINER_HOST_ADDRESS': 'localhost',
            'DOCKER_IMAGE': 'ubuntu',
            'DOCKER_TAG': 'latest',
            'S2_INSTANCES': 's2a,s2b',
            'S2_S2A_HOST': 'localhost',
            'S2_S2B_HOST': 'localhost',
            'SOME_ENV': 'value',
            'OVERRIDE': 'cat'
        })
Exemple #14
0
 def test_duplicate_container_name_across_services(self):
     config = self._get_config('duplicate_container_across_services')
     self.assertRaises(
             exceptions.EnvironmentConfigurationException,
             lambda: maestro.Conductor(config))
Exemple #15
0
 def test_empty_registry_list(self):
     config = self._get_config('empty_registries')
     c = maestro.Conductor(config)
     self.assertIsNot(c.registries, None)
     self.assertEqual(c.registries, {})
Exemple #16
0
 def test_non_failing_auditor(self):
     config = self._get_config('auditor_ignore_errors')
     c = maestro.Conductor(config)
     # Should not fail
     c.auditor.get_auditors()[1].action(maestro.audit.INFO, 'foo', 'start')
Exemple #17
0
 def test_container_filters_no_filter(self):
     config = self._get_config('container_filter')
     c = maestro.Conductor(config)
     containers = c._to_containers(['webapp'], True, None, None)
     self.assertEqual(len(containers), 2)