Exemple #1
0
def _get_ocf_resource_agent_metadata(runner, provider, agent):
    """
    Returns metadata dom for specified ocf resource agent
    Raises AgentNotFound if specified agent is relative path or file is not
        runnable.
    Raises UnableToGetAgentMetadata if there was problem getting or
    parsing metadata.

    runner -- CommandRunner
    provider -- resource agent provider
    agent -- resource agent name
    """
    agent_name = "ocf:" + provider + ":" + agent

    script_path = os.path.join(settings.ocf_resources, provider, agent)

    if not __is_path_abs(script_path) or not is_path_runnable(script_path):
        raise AgentNotFound(agent_name)

    output, retval = runner.run(
        [script_path, "meta-data"],
        env_extend={"OCF_ROOT": settings.ocf_root},
        ignore_stderr=True
    )

    if output.strip() == "":
        raise UnableToGetAgentMetadata(agent_name, output)

    try:
        return etree.fromstring(output)
    except etree.XMLSyntaxError as e:
        raise UnableToGetAgentMetadata(agent_name, str(e))
Exemple #2
0
def get_fence_agent_metadata(runner, fence_agent):
    """
    Returns dom of metadata for specified fence agent
    Raises AgentNotFound if fence_agent doesn't starts with fence_ or it is
        relative path or file is not runnable.
    Raises UnableToGetAgentMetadata if there was problem getting or
        parsing metadata.

    runner -- CommandRunner
    fence_agent -- fence agent name, should start with 'fence_'
    """
    script_path = os.path.join(settings.fence_agent_binaries, fence_agent)

    if not (
        fence_agent.startswith("fence_") and
        __is_path_abs(script_path) and
        is_path_runnable(script_path)
    ):
        raise AgentNotFound(fence_agent)

    output, retval = runner.run(
        [script_path, "-o", "metadata"], ignore_stderr=True
    )

    if output.strip() == "":
        raise UnableToGetAgentMetadata(fence_agent, output)

    try:
        return etree.fromstring(output)
    except etree.XMLSyntaxError as e:
        raise UnableToGetAgentMetadata(fence_agent, str(e))