def test_should_not_add_credentials_details_for_lxc_node_definitions(self):
        single_service_yaml = """
            lxc_hello_world:
              nodes:
                - template: ubuntu
                  services: [hello_world]
                  type: phoenix.providers.lxc_provider.LXCNodeDefinition

              node_provider:
                class_name: LXCNodeProvider
                host_name: ec2-184-72-150-211.compute-1.amazonaws.com
                credentials: us-east-ssh
                start_up_timeout: 60
        """
        node_def_map = yaml.load(single_service_yaml)
        node_def = node_config.node_definition_from_map(node_def_map['lxc_hello_world']['nodes'][0], all_credentials)
        self.assertFalse(hasattr(node_def, 'admin_user'))
        self.assertFalse(hasattr(node_def, 'path_to_private_key'))
    def test_should_add_credentials_details_for_aws_node_definitions(self):
        single_service_yaml = """
            dev:
              nodes:
                - ami_id: ami-4dad7424
                  size:   t1.micro
                  credentials_name: test
                  aws_key_name: test
                  services: [mongo, hello_world]
                  type: phoenix.providers.aws_provider.AWSNodeDefinition

              node_provider:
                class_name: AWSNodeProvider
                public_api_key: AKIAIGBFGAGVPGKLVX4Q
                private_api_key: NAOcwcX3an5hcyLCz3Y4xucwr4Fqxs9ijLn6biqk
        """
        node_def_map = yaml.load(single_service_yaml)
        node_def = node_config.node_definition_from_map(node_def_map['dev']['nodes'][0], all_credentials)
        self.assertEqual('ubuntu', node_def.admin_user)
        self.assertEqual('/some/path/unit-us-east-test.pem', node_def.path_to_private_key)
def environment_definitions_from_yaml(yaml_string, service_definitions=None, env_name=None, all_credentials=None, noop=False):
    definition_data = yaml.load(yaml_string)
    definition_map = {}

    error_list = []
    _validate_environment_definitions(definition_data, error_list, all_credentials, service_definitions)

    for env_template, env_values in definition_data.items():
        node_defs = []

        for node_def_as_map in env_values['nodes']:
            node_defs.append(node_definition_from_map(node_def_as_map, all_credentials))

        node_provider = _provider(env_values, all_credentials)
        if noop:
            node_provider = NoopNodeProvider(node_provider)

        service_hooks = get_service_lifecycle_hooks(env_values)
        definition_map[env_template] = EnvironmentDefinition(
            env_name, node_provider,
            service_definitions, node_defs, all_credentials, env_template, service_hooks)
    return definition_map