def test_find_previous_service_containers(self, mock_find_service_containers):
     self.mock_container.name = 'foo-bar'
     mock_find_service_containers.return_value = {'foo-bar': self.mock_container}
     self.mock_service.containers = []
     self.mock_urlparse.return_value.scheme = 'http'
     container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
     self.assertTrue('foo-bar' in container_ship.find_previous_service_containers(service=self.mock_service))
 def test_load_containers(self, mock_container_ship_healthy, mock_container_ship_load_service_containers):
     mock_container_ship_healthy.return_value = True
     mock_service = mock.Mock(spec=Service)
     self.mock_urlparse.return_value.scheme = 'http'
     container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
     container_ship.load_containers(service=mock_service, configs={}, use_cache=False)
     self.assertIsInstance(container_ship, ContainerShip)
 def test_export(self):
     self.mock_urlparse.return_value.scheme = 'http'
     self.mock_service.cargo = self.mock_image
     self.mock_service.cargo.return_value.push.return_value = None
     self.mock_service.alias = 'foo-bar'
     container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
     self.assertTrue(container_ship.export(service=self.mock_service))
 def test_start_service_containers(self, mock_find_service_containers):
     mock_find_service_containers.return_value = {'foo-bar': self.mock_container}
     self.mock_container.state.return_value = {}
     self.mock_container.stop.return_value = True
     self.mock_container.start.return_value = True
     self.mock_service.containers = {'foo-bar': self.mock_container}
     container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
     self.assertTrue(container_ship.start_service_containers(service=self.mock_service, attach=False))
 def test_find_service_containers(self, mock_re, mock_container):
     mock_container.name = 'foo-bar'
     mock_container.find_by_name.return_value = {'foo-bar': mock_container}
     mock_service = mock.Mock(spec=Service)
     mock_service.alias = 'foo-bar'
     self.mock_urlparse.return_value.scheme = 'http'
     container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
     self.assertTrue('foo-bar' in container_ship.find_service_containers(service=mock_service))
 def test_update_container_host_config(self, mock_load_dependency_containers, mock_update_links, mock_update_volumes_from):
     self.mock_service.dependencies = {'appexample-api': self.mock_container}
     self.mock_service.host_config = self.mock_host_config
     self.mock_urlparse.return_value.scheme = 'http'
     container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
     container_ship._update_container_host_config(service=self.mock_service)
     mock_load_dependency_containers.assert_called_once_with(self.mock_service)
     mock_update_links.assert_called_once_with(self.mock_service)
     mock_update_volumes_from.asseert_called_once_with(self.mock_service)
 def test_update_volumes_from(self):
     api_service = mock.Mock(spec=Service)
     self.mock_container.id = 'bar'
     api_service.containers = {'api': self.mock_container}
     self.mock_service.host_config.volumes_from = ['api:rw']
     self.mock_service.dependencies = {'api': api_service}
     self.mock_urlparse.return_value.scheme = 'http'
     container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
     container_ship._update_volumes_from(service=self.mock_service)
     self.assertEquals(self.mock_service.host_config.volumes_from[0], 'bar')
 def test_load_dependency_containers(self, mock_find_service_containers):
     self.mock_service.dependencies = {'foobar-dependency': self.mock_container}
     self.mock_service.host_config.links = ['foobar-dependency']
     self.mock_container.name = 'foobar-dependency'
     self.mock_container.containers = {}
     self.mock_container.state.return_value = {'running': True}
     mock_find_service_containers.return_value = {'foobar-dependency': self.mock_container}  # part of return
     container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
     container_ship._load_dependency_containers(service=self.mock_service)
     self.assertEqual(
         self.mock_service.dependencies['foobar-dependency'].containers['foobar-dependency'],
         self.mock_container
     )
 def test_update_links(self):
     foo_service = mock.Mock(spec=Service)
     self.mock_container.id = 'bar'
     foo_service.containers = {'foo': self.mock_container}
     self.mock_host_config.links = ['foo']
     self.mock_service.name = 'api'
     self.mock_service.alias = 'appexample-api'
     self.mock_service.host_config = self.mock_host_config
     self.mock_service.dependencies = {'foo': foo_service}
     self.mock_urlparse.return_value.scheme = 'http'
     container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
     container_ship._update_links(service=self.mock_service)
     self.assertEquals(self.mock_service.host_config.links[0], 'bar:foo')
 def test_load_service_cargo(self, mock_request_auth, mock_v2_registry):
     self.mock_service.repository = 'http://127.0.0.1'
     self.mock_service.namespace = 'appexample-api'
     self.mock_service.source_registry = mock_v2_registry
     self.mock_service.source_tag = 'latest'
     self.mock_service.cargo = self.mock_image
     self.mock_urlparse.return_value.scheme = 'http'
     container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
     container_ship._load_service_cargo(service=self.mock_service, inject_configs=False)
     self.mock_image.pull.assert_called_once(
         self.mock_docker_client,
         mock_v2_registry,
         '{0}/{1}:{2}'.format(self.mock_service.repository, self.mock_service.namespace, self.mock_service.source_tag)
     )
 def test_load_service_containers(self,
                                  mock_config_to_dict,
                                  mock_load_service_cargo,
                                  mock_load_dependency_containers,
                                  mock_container_registration,
                                  mock_update_container_host_config):
     mock_container_registration.return_value = 'appexample-api-01'
     self.mock_service.containers = {}
     self.mock_service.cargo = self.mock_image
     self.mock_service.alias = 'appexample-api'
     self.mock_urlparse.return_value.scheme = 'http'
     container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
     container_ship._load_service_containers(service=self.mock_service, configs='', use_cache=False)
     self.assertIn('appexample-api-01', self.mock_service.containers)
 def test_load_cargo_failure(self, mock_healthy):
     with self.assertRaises(TypeError):
         container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
         container_ship.load_cargo(service=False)
     with self.assertRaises(Exception):
         mock_healthy.return_value = False
         container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
         container_ship.load_cargo(service=self.mock_service)
 def test_service(self, mock_update_container_host_config, mock_copy):
     self.mock_container.find_by_name.return_value = {'foo-bar': self.mock_container}
     self.mock_service.repository = 'http://127.0.0.1'
     self.mock_service.name = 'appexample'
     self.mock_service.namespace = 'appexample-api'
     self.mock_service.alias = 'appexample'
     self.mock_service.docker_file = 'foobar'
     self.mock_service.dependencies = {}
     self.mock_service.container_config = ''
     self.mock_image.find_by_name.return_value = True
     container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
     container_ship.test_service(service=self.mock_service, configs='')
     self.mock_logger.info.assert_called_once_with('Testing Service: {0}'.format(
         self.mock_service.name
     ))
     self.assertIsInstance(container_ship, ContainerShip)
 def test_request_auth_failure(self, mock_v2_registry):
     self.mock_urlparse.return_value.scheme = 'http'
     with self.assertRaises(Exception):
         container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
         container_ship._request_auth(registry=False)
     with self.assertRaises(Exception):
         self.mock_docker_client.return_value.login.side_effect = Exception
         container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
         container_ship._request_auth(registry=mock_v2_registry)
 def test_export_failure(self):
     self.mock_urlparse.return_value.scheme = 'http'
     with self.assertRaises(TypeError):
         container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
         container_ship.export(service=False)
     with self.assertRaises(ValueError):
         self.mock_service.cargo = None
         container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
         container_ship.export(service=self.mock_service)
 def test_load_containers_failure(self, mock_container_ship_healthy):
     self.mock_urlparse.return_value.scheme = 'http'
     with self.assertRaises(TypeError):
         container_ship = ContainerShip(address='127.0.0.1:2376', **{})
         container_ship.load_containers(service=None, configs={}, use_cache=False)
     mock_container_ship_healthy.return_value = False
     with self.assertRaises(Exception):
         container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
         container_ship.load_containers(service=self.mock_service, configs={}, use_cache=False)
 def test_offload_cargo(self):
     self.mock_service.repository = 'http://127.0.0.1'
     self.mock_service.namespace = 'appexample-api'
     self.mock_image.find_all_by_name.return_value = {
         'foo-bar01': self.mock_image,
         'foo-bar02': self.mock_image,
         'foo-bar03': self.mock_image,
     }
     self.mock_image.identifier = 'http://127.0.0.1/appexample-api-test01'
     container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
     container_ship._offload_cargo(service=self.mock_service)
     self.mock_logger.info.assert_called_once_with(
         'Done offloading Cargo for {0}/{1}.'.format(
             self.mock_service.repository,
             self.mock_service.namespace
         )
     )
 def test_injector(self):
     self.mock_urlparse.return_value.scheme = 'http'
     container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
     container_ship.injector = self.injector
     self.assertIsInstance(container_ship.injector, Injector)
 def test_create_container_ship(self, mock_docker_tlsconfig):
     self.mock_utils.validate_path.return_value = '/'
     self.mock_urlparse.return_value.scheme = 'https'
     kwargs = {'ssl_cert_path': '/', 'services': None, 'verify': False}
     container_ship = ContainerShip(address='https://127.0.0.1:2376', **kwargs)
     self.assertIsInstance(container_ship, ContainerShip)
 def test_load_cargo(self, mock_healthy, mock_load_service_cargo):
     mock_healthy.return_value = True
     container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
     container_ship.load_cargo(service=self.mock_service)
     self.assertIsInstance(container_ship, ContainerShip)
 def test_offload_project(self):
     self.mock_container.find_by_name.return_value = {'foo-bar': self.mock_container}
     self.mock_container.delete.return_value = True
     container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
     container_ship.offload_project(team='foo', project='bar')
     self.assertIsInstance(container_ship, ContainerShip)
 def test_recall_service_failure(self):
     self.mock_urlparse.return_value.scheme = 'http'
     with self.assertRaises(TypeError):
         container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
         container_ship.recall_service(service=False)
 def test_private_offload_service_containers(self):
     self.mock_service.containers = {'foobar': self.mock_container}
     container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
     container_ship._offload_service_containers(service=self.mock_service)
     self.assertEquals(self.mock_service.containers, {})
 def test_load_containers(self, mock_container_ship_healthy, mock_container_ship_load_service_containers):
     mock_container_ship_healthy.return_value = True
     self.mock_urlparse.return_value.scheme = 'http'
     container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
     container_ship.load_containers(service=self.mock_service, configs={}, use_cache=False)
     self.assertIsInstance(container_ship, ContainerShip)
 def test_container_registration(self):
     self.mock_container.find_by_name.return_value = {'foo-bar': self.mock_container}
     container_alias = 'foobar'
     container_ship = ContainerShip(address='http://127.0.0.1:2376', **{})
     container_name = container_ship._container_registration(alias=container_alias)
     self.assertEqual(container_name, '{0}-01'.format(container_alias))