Esempio n. 1
0
 def test_list_all(self):
     self.assertEqual(lib.list_agents(self.lib_env, False, None), [
         {
             "name": "ocf:test:Delay",
             "shortdesc": "",
             "longdesc": "",
             "parameters": [],
             "actions": [],
         },
         {
             "name": "ocf:test:Stateful",
             "shortdesc": "",
             "longdesc": "",
             "parameters": [],
             "actions": [],
         },
         {
             "name": "service:corosync",
             "shortdesc": "",
             "longdesc": "",
             "parameters": [],
             "actions": [],
         },
         {
             "name": "service:pacemaker_remote",
             "shortdesc": "",
             "longdesc": "",
             "parameters": [],
             "actions": [],
         },
     ])
Esempio n. 2
0
 def test_search(self):
     self.assertEqual(
         lib.list_agents(self.lib_env, False, "te"),
         [
             {
                 "name": "ocf:test:Delay",
                 "shortdesc": "",
                 "longdesc": "",
                 "parameters": [],
                 "actions": [],
             },
             {
                 "name": "ocf:test:Stateful",
                 "shortdesc": "",
                 "longdesc": "",
                 "parameters": [],
                 "actions": [],
             },
             {
                 "name": "service:pacemaker_remote",
                 "shortdesc": "",
                 "longdesc": "",
                 "parameters": [],
                 "actions": [],
             },
         ]
     )
Esempio n. 3
0
 def test_search(self):
     self.assertEqual(
         lib.list_agents(self.lib_env, False, "te"),
         [
             {
                 "name": "ocf:test:Delay",
                 "shortdesc": "",
                 "longdesc": "",
                 "parameters": [],
                 "actions": [],
                 "default_actions": [],
             },
             {
                 "name": "ocf:test:Stateful",
                 "shortdesc": "",
                 "longdesc": "",
                 "parameters": [],
                 "actions": [],
                 "default_actions": [],
             },
             {
                 "name": "service:pacemaker_remote",
                 "shortdesc": "",
                 "longdesc": "",
                 "parameters": [],
                 "actions": [],
                 "default_actions": [],
             },
         ],
     )
Esempio n. 4
0
 def test_search(self):
     self.assertEqual(
         lib.list_agents(self.env_assist.get_env(), False, "te"),
         [
             self._fixture_agent_struct(
                 ResourceAgentName("ocf", "test", "Delay")),
             self._fixture_agent_struct(
                 ResourceAgentName("ocf", "test", "Stateful")),
             self._fixture_agent_struct(
                 ResourceAgentName("service", None, "pacemaker_remote")),
         ],
     )
Esempio n. 5
0
    def test_describe(self, mock_metadata):
        def mock_metadata_func(self):
            if self.get_name() == "ocf:test:Stateful":
                raise lib_ra.UnableToGetAgentMetadata(
                    self.get_name(),
                    "test exception"
                )
            return etree.XML("""
                <resource-agent>
                    <shortdesc>short {name}</shortdesc>
                    <longdesc>long {name}</longdesc>
                    <parameters>
                    </parameters>
                    <actions>
                    </actions>
                </resource-agent>
            """.format(name=self.get_name()))
        mock_metadata.side_effect = mock_metadata_func

        # Stateful is missing as it does not provide valid metadata - see above
        self.assertEqual(
            lib.list_agents(self.lib_env, True, None),
            [
                {
                    "name": "ocf:test:Delay",
                    "shortdesc": "short ocf:test:Delay",
                    "longdesc": "long ocf:test:Delay",
                    "parameters": [],
                    "actions": [],
                },
                {
                    "name": "service:corosync",
                    "shortdesc": "short service:corosync",
                    "longdesc": "long service:corosync",
                    "parameters": [],
                    "actions": [],
                },
                {
                    "name": "service:pacemaker_remote",
                    "shortdesc": "short service:pacemaker_remote",
                    "longdesc": "long service:pacemaker_remote",
                    "parameters": [],
                    "actions": [],
                },
            ]
        )
Esempio n. 6
0
    def test_describe(self, mock_metadata):
        def mock_metadata_func(self):
            if self._full_agent_name == "ocf:test:Stateful":
                raise lib_ra.UnableToGetAgentMetadata(
                    self._full_agent_name,
                    "test exception"
                )
            return etree.XML("""
                <resource-agent>
                    <shortdesc>short {name}</shortdesc>
                    <longdesc>long {name}</longdesc>
                    <parameters>
                    </parameters>
                    <actions>
                    </actions>
                </resource-agent>
            """.format(name=self._full_agent_name))
        mock_metadata.side_effect = mock_metadata_func

        # Stateful is missing as it does not provide valid metadata - see above
        self.assertEqual(
            lib.list_agents(self.lib_env, True, None),
            [
                {
                    "name": "ocf:test:Delay",
                    "shortdesc": "short ocf:test:Delay",
                    "longdesc": "long ocf:test:Delay",
                    "parameters": [],
                    "actions": [],
                },
                {
                    "name": "service:corosync",
                    "shortdesc": "short service:corosync",
                    "longdesc": "long service:corosync",
                    "parameters": [],
                    "actions": [],
                },
                {
                    "name": "service:pacemaker_remote",
                    "shortdesc": "short service:pacemaker_remote",
                    "longdesc": "long service:pacemaker_remote",
                    "parameters": [],
                    "actions": [],
                },
            ]
        )
Esempio n. 7
0
    def test_describe(self):
        self.config.runner.pcmk.load_agent(
            agent_name="ocf:test:Delay",
            stdout=self._fixture_agent_metadata("ocf:test:Delay"),
            env={"PATH": "/usr/sbin:/bin:/usr/bin"},
            name="runner.pcmk.load_agent.delay",
        )
        self.config.runner.pcmk.load_agent(
            agent_name="ocf:test:Stateful",
            agent_is_missing=True,
            env={"PATH": "/usr/sbin:/bin:/usr/bin"},
            name="runner.pcmk.load_agent.stateful",
        )
        self.config.runner.pcmk.load_agent(
            agent_name="service:corosync",
            stdout=self._fixture_agent_metadata("service:corosync"),
            env={"PATH": "/usr/sbin:/bin:/usr/bin"},
            name="runner.pcmk.load_agent.corosync",
        )
        self.config.runner.pcmk.load_agent(
            agent_name="service:pacemaker_remote",
            stdout=self._fixture_agent_metadata("service:pacemaker_remote"),
            env={"PATH": "/usr/sbin:/bin:/usr/bin"},
            name="runner.pcmk.load_agent.pacemaker_remote",
        )

        agent_stub = {
            "parameters": [],
            "actions": [],
            "default_actions": [
                {
                    "interval": "60s",
                    "name": "monitor",
                    "OCF_CHECK_LEVEL": None,
                    "automatic": False,
                    "on_target": False,
                    "role": None,
                    "start-delay": None,
                    "timeout": None,
                }
            ],
        }
        self.assertEqual(
            lib.list_agents(self.env_assist.get_env(), True, None),
            [
                dict(
                    name="ocf:test:Delay",
                    standard="ocf",
                    provider="test",
                    type="Delay",
                    shortdesc="short ocf:test:Delay",
                    longdesc="long ocf:test:Delay",
                    **agent_stub,
                ),
                dict(
                    name="service:corosync",
                    standard="service",
                    provider=None,
                    type="corosync",
                    shortdesc="short service:corosync",
                    longdesc="long service:corosync",
                    **agent_stub,
                ),
                dict(
                    name="service:pacemaker_remote",
                    standard="service",
                    provider=None,
                    type="pacemaker_remote",
                    shortdesc="short service:pacemaker_remote",
                    longdesc="long service:pacemaker_remote",
                    **agent_stub,
                ),
            ],
        )
        self.env_assist.assert_reports(
            [
                fixture.warn(
                    report_codes.UNABLE_TO_GET_AGENT_METADATA,
                    agent="ocf:test:Stateful",
                    reason=(
                        "Agent ocf:test:Stateful not found or does not support "
                        "meta-data: Invalid argument (22)\nMetadata query for "
                        "ocf:test:Stateful failed: Input/output error"
                    ),
                )
            ]
        )
Esempio n. 8
0
    def test_describe(self, mock_metadata):
        self.maxDiff = None

        def mock_metadata_func(self):
            if self._get_name() == "ocf:test:Stateful":
                raise lib_ra.UnableToGetAgentMetadata(
                    self._get_name(), "test exception"
                )
            return etree.XML(
                """
                <resource-agent>
                    <shortdesc>short {name}</shortdesc>
                    <longdesc>long {name}</longdesc>
                    <parameters>
                    </parameters>
                    <actions>
                    </actions>
                </resource-agent>
            """.format(
                    name=self._get_name()
                )
            )

        mock_metadata.side_effect = mock_metadata_func

        # Stateful is missing as it does not provide valid metadata - see above
        self.assertEqual(
            lib.list_agents(self.lib_env, True, None),
            [
                {
                    "name": "ocf:test:Delay",
                    "shortdesc": "short ocf:test:Delay",
                    "longdesc": "long ocf:test:Delay",
                    "parameters": [],
                    "actions": [],
                    "default_actions": [
                        {
                            "interval": "60s",
                            "name": "monitor",
                            "OCF_CHECK_LEVEL": None,
                            "automatic": None,
                            "depth": None,
                            "on_target": None,
                            "role": None,
                            "start-delay": None,
                            "timeout": None,
                        }
                    ],
                },
                {
                    "name": "service:corosync",
                    "shortdesc": "short service:corosync",
                    "longdesc": "long service:corosync",
                    "parameters": [],
                    "actions": [],
                    "default_actions": [
                        {
                            "interval": "60s",
                            "name": "monitor",
                            "OCF_CHECK_LEVEL": None,
                            "automatic": None,
                            "depth": None,
                            "on_target": None,
                            "role": None,
                            "start-delay": None,
                            "timeout": None,
                        }
                    ],
                },
                {
                    "name": "service:pacemaker_remote",
                    "shortdesc": "short service:pacemaker_remote",
                    "longdesc": "long service:pacemaker_remote",
                    "parameters": [],
                    "actions": [],
                    "default_actions": [
                        {
                            "interval": "60s",
                            "name": "monitor",
                            "OCF_CHECK_LEVEL": None,
                            "automatic": None,
                            "depth": None,
                            "on_target": None,
                            "role": None,
                            "start-delay": None,
                            "timeout": None,
                        }
                    ],
                },
            ],
        )