def test_should_return_empty_running_environment_if_nothing_is_running(self): mock_command_helper = mock() when(mock_command_helper).run_command("sudo lxc-ls -c1").thenReturn("") provider = LXCNodeProvider(None, None, mock_command_helper) environment = provider.get_running_environment("test", "test", all_credentials) self.assertIsNotNone(environment) self.assertEqual(0, len(environment.get_locations()))
def test_should_add_error_if_host_name_contains_only_spaces(self): single_service_yaml = """ prod: services: hello_world: [ web_node, web_node ] mongo: [ db_node ] node_provider: class_name: LXCNodeProvider host_name: admin_user: ubuntu credentials: test """ lxc_node_provider = LXCNodeProvider() error_list = [] lxc_node_provider.validate('prod', yaml.load(single_service_yaml)['prod']['node_provider'], error_list, all_credentials) self.assertEqual(len(error_list), 1) self.assertEqual("Key 'host_name' not defined for LXC in 'prod' environment", error_list[0])
def test_should_add_error_if_no_host_name_found(self): single_service_yaml = """ prod: services: hello_world: [ web_node, web_node ] mongo: [ db_node ] node_provider: class_name: LXCNodeProvider invalid_host_name: ec2-107-20-98-18.compute-1.amazonaws.com admin_user: ubuntu credentials: test """ lxc_node_provider = LXCNodeProvider() error_list = [] lxc_node_provider.validate('prod', yaml.load(single_service_yaml)['prod']['node_provider'], error_list, all_credentials) self.assertEqual(len(error_list), 1) self.assertEqual("Key 'host_name' not found for LXC in 'prod' environment", error_list[0])
def test_will_parse_LXC_node_environment_configuration(self): single_service_yaml = """ prod: services: hello_world: [ web_node, web_node ] mongo: [ db_node ] node_provider: class_name: LXCNodeProvider host_name: ec2-107-20-98-18.compute-1.amazonaws.com admin_user: ubuntu credentials: test """ lxc_node_provider = LXCNodeProvider() error_list = [] lxc_node_provider.validate('prod', yaml.load(single_service_yaml)['prod']['node_provider'], error_list, all_credentials) self.assertEqual(len(error_list), 0)
def test_should_return_a_list_of_nodes_from_a_running_environment(self): mock_command_helper = mock() tags1 = """ 'services' : 'apache': {80: 80} 'credentials_name': 'test' 'env_name' : 'test' 'env_def_name' : 'Single-AZ Deployment' """ tags2 = """ 'services' : 'mongo': {81: 82} 'credentials_name': 'test' 'env_name' : 'test' 'env_def_name' : 'Single-AZ Deployment' """ when(mock_command_helper).run_command("sudo lxc-ls -c1").thenReturn("123\n124") when(mock_command_helper).run_command("if sudo [ -f /var/lib/lxc/123/tags ]; then sudo cat /var/lib/lxc/123/tags; else echo '{}'; fi").thenReturn(tags1) when(mock_command_helper).run_command("if sudo [ -f /var/lib/lxc/124/tags ]; then sudo cat /var/lib/lxc/124/tags; else echo '{}'; fi").thenReturn(tags2) when(mock_command_helper).run_command("sudo lxc-info -n 123").thenReturn("state: RUNNING") when(mock_command_helper).run_command("sudo lxc-info -n 124").thenReturn("state: RUNNING") provider = LXCNodeProvider(all_credentials, 'test_host', mock_command_helper) environment = provider.get_running_environment("test", "Single-AZ Deployment", all_credentials) self.assertIsNotNone(environment) self.assertEquals(1, len(environment.get_locations())) self.assertIsNotNone(environment.get_locations()[0].get_nodes()) self.assertEquals('test_host', environment.get_locations()[0].get_name()) node1 = environment.get_locations()[0].get_nodes()[0] self.assertIsNotNone(node1.get_services()) self.assertEquals({'apache' : {80 : 80}}, node1.get_services()) node2 = environment.get_locations()[0].get_nodes()[1] self.assertIsNotNone(node2.get_services()) self.assertEquals({'mongo' : {81 : 82}}, node2.get_services())