def test_should_return_empty_running_environment_if_nothing_is_running(self): fake_boto_instance = mock() tags = { 'services' : """ apache : 80: 80""", 'credentials_name': 'test', 'env_name' : 'my_environment', 'env_def_name' : 'Single-AZ Deployment', } fake_boto_instance.tags = tags stub_region = mock() stub_region.name = 'eu-west' fake_boto_instance.region = stub_region fake_boto_instance.image_id = '1234' fake_boto_instance.instance_type = 'large' mock_connection_provider = mock() when(mock_connection_provider).ec2_connection_for_region("eu-west", None, None).thenReturn(None) when(mock_connection_provider).get_all_boto_instances(None, None).thenReturn([fake_boto_instance]) provider = AWSNodeProvider(None, None, mock_connection_provider) environment = provider.get_running_environment("test","test", all_credentials) self.assertIsNotNone(environment) self.assertEqual(0, len(environment.get_locations()))
def test_will_parse_AWS_node_environment_configuration(self): single_service_yaml = """ prod: services: hello_world: [ web_node, web_node ] mongo: [ db_node ] node_provider: class_name: AWSNodeProvider public_api_key: AKIAIGBFGAGVPGKLVX4Q private_api_key: NAOcwcX3an5hcyLCz3Y4xucwr4Fqxs9ijLn6biqk """ aws_node_provider = AWSNodeProvider() error_list = [] aws_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_add_error_if_public_api_key_is_empty(self): single_service_yaml = """ prod: nodes: - ami_id: ami-4dad7424 size: t1.micro credentials_name: test services: [mongo, hello_world] type: phoenix.providers.aws_provider.AWSNodeDefinition node_provider: class_name: AWSNodeProvider public_api_key: private_api_key: NAOcwcX3an5hcyLCz3Y4xucwr4Fqxs9ijLn6biqk """ aws_node_provider = AWSNodeProvider() error_list = [] aws_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 'public_api_key' not defined for AWS in 'prod' environment", error_list[0])
def test_should_add_error_if_private_api_key_contains_only_spaces(self): single_service_yaml = """ prod: nodes: - ami_id: ami-4dad7424 size: t1.micro credentials_name: test services: [mongo, hello_world] type: phoenix.providers.aws_provider.AWSNodeDefinition node_provider: class_name: AWSNodeProvider public_api_key: AKIAIGBFGAGVPGKLVX4Q private_api_key: """ aws_node_provider = AWSNodeProvider() error_list = [] aws_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 'private_api_key' not defined for AWS in 'prod' environment", error_list[0])
def test_should_return_a_list_of_nodes_with_same_location_from_a_running_environment(self): fake_boto_instance1 = mock() tags = { 'services' : """ 'apache' : 80: 80""", 'credentials_name': 'test', 'env_name' : 'test', 'env_def_name' : 'Single-AZ Deployment', } fake_boto_instance1.tags = tags stub_region = mock() stub_region.name = 'eu-west' fake_boto_instance1.region = stub_region fake_boto_instance1.image_id = '1234' fake_boto_instance1.id = 'id1234' fake_boto_instance1.public_dns_name = 'test_dns' fake_boto_instance1.instance_type = 'large' fake_boto_instance1.state = 'running' fake_boto_instance1.placement='us-east-1' fake_boto_instance2 = mock() tags = { 'services' : """ 'mongo' : 81: 81""", 'credentials_name': 'test', 'env_name' : 'test', 'env_def_name' : 'Single-AZ Deployment', } fake_boto_instance2.tags = tags stub_region1 = mock() stub_region1.name = 'eu-west' fake_boto_instance2.region = stub_region1 fake_boto_instance2.image_id = '1234' fake_boto_instance2.id = 'id1235' fake_boto_instance2.public_dns_name = 'test_dns' fake_boto_instance2.instance_type = 'large' fake_boto_instance2.state = 'running' fake_boto_instance2.placement='us-east-1' mock_connection_provider = mock() when(mock_connection_provider).ec2_connection_for_region("eu-west-1", None, None).thenReturn(None) when(mock_connection_provider).get_all_boto_instances(None, None).thenReturn([fake_boto_instance1, fake_boto_instance2]) provider = AWSNodeProvider(None, None, mock_connection_provider) 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('eu-west', environment.get_locations()[0].get_name()) self.assertEquals(2, len(environment.get_locations()[0].get_nodes())) 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 : 81}}, node2.get_services())