Esempio n. 1
0
def parse_mapreduce_yaml(contents):
    """Parses mapreduce.yaml file contents.

  Args:
    contents: mapreduce.yaml file contents.

  Returns:
    MapReduceYaml object with all the data from original file.

  Raises:
    errors.BadYamlError: when contents is not a valid mapreduce.yaml file.
  """
    try:
        builder = yaml_object.ObjectBuilder(MapReduceYaml)
        handler = yaml_builder.BuilderHandler(builder)
        listener = yaml_listener.EventListener(handler)
        listener.Parse(contents)

        mr_info = handler.GetResults()
    except (ValueError, yaml_errors.EventError), e:
        raise errors.BadYamlError(e)
Esempio n. 2
0
  Raises:
    errors.BadYamlError: when contents is not a valid mapreduce.yaml file.
  """
    try:
        builder = yaml_object.ObjectBuilder(MapReduceYaml)
        handler = yaml_builder.BuilderHandler(builder)
        listener = yaml_listener.EventListener(handler)
        listener.Parse(contents)

        mr_info = handler.GetResults()
    except (ValueError, yaml_errors.EventError), e:
        raise errors.BadYamlError(e)

    if len(mr_info) < 1:
        raise errors.BadYamlError("No configs found in mapreduce.yaml")
    if len(mr_info) > 1:
        raise errors.MultipleDocumentsInMrYaml("Found %d YAML documents" %
                                               len(mr_info))

    jobs = mr_info[0]
    job_names = set(j.name for j in jobs.mapreduce)
    if len(jobs.mapreduce) != len(job_names):
        raise errors.BadYamlError(
            "Overlapping mapreduce names; names must be unique")

    return jobs


def get_mapreduce_yaml(parse=parse_mapreduce_yaml):
    """Locates mapreduce.yaml, loads and parses its info.