예제 #1
0
    def test_success_not_used(self, mock_status):
        mock_status.return_value = ""

        lib.qdevice_stop(self.lib_env, "net", proceed_if_used=False)

        self.assertEqual(
            self.lib_env.service_manager.method_calls,
            [mock.call.stop("corosync-qnetd")],
        )
        assert_report_item_list_equal(
            self.mock_reporter.report_item_list,
            [
                (
                    severity.INFO,
                    reports.codes.SERVICE_ACTION_STARTED,
                    {
                        "action": reports.const.SERVICE_ACTION_STOP,
                        "service": "quorum device",
                        "instance": "",
                    },
                ),
                (
                    severity.INFO,
                    reports.codes.SERVICE_ACTION_SUCCEEDED,
                    {
                        "action": reports.const.SERVICE_ACTION_STOP,
                        "service": "quorum device",
                        "node": "",
                        "instance": "",
                    },
                ),
            ],
        )
예제 #2
0
    def test_success_used_forced(self, mock_net_stop, mock_status):
        mock_status.return_value = 'Cluster "a_cluster":\n'

        lib.qdevice_stop(self.lib_env, "net", proceed_if_used=True)

        mock_net_stop.assert_called_once_with("mock_runner", "corosync-qnetd")
        assert_report_item_list_equal(
            self.mock_reporter.report_item_list,
            [
                (
                    severity.WARNING,
                    report_codes.QDEVICE_USED_BY_CLUSTERS,
                    {
                        "clusters": ["a_cluster"],
                    }
                ),
                (
                    severity.INFO,
                    report_codes.SERVICE_STOP_STARTED,
                    {
                        "service": "quorum device",
                    }
                ),
                (
                    severity.INFO,
                    report_codes.SERVICE_STOP_SUCCESS,
                    {
                        "service": "quorum device",
                    }
                )
            ]
        )
예제 #3
0
    def test_success_not_used(self, mock_net_stop, mock_status):
        mock_status.return_value = ""

        lib.qdevice_stop(self.lib_env, "net", proceed_if_used=False)

        mock_net_stop.assert_called_once_with("mock_runner", "corosync-qnetd")
        assert_report_item_list_equal(
            self.mock_reporter.report_item_list,
            [
                (
                    severity.INFO,
                    report_codes.SERVICE_STOP_STARTED,
                    {
                        "service": "quorum device",
                    }
                ),
                (
                    severity.INFO,
                    report_codes.SERVICE_STOP_SUCCESS,
                    {
                        "service": "quorum device",
                    }
                )
            ]
        )
예제 #4
0
    def test_success_used_forced(self, mock_net_stop, mock_status):
        mock_status.return_value = 'Cluster "a_cluster":\n'

        lib.qdevice_stop(self.lib_env, "net", proceed_if_used=True)

        mock_net_stop.assert_called_once_with("mock_runner", "corosync-qnetd")
        assert_report_item_list_equal(
            self.mock_reporter.report_item_list,
            [
                (
                    severity.WARNING,
                    report_codes.QDEVICE_USED_BY_CLUSTERS,
                    {
                        "clusters": ["a_cluster"],
                    }
                ),
                (
                    severity.INFO,
                    report_codes.SERVICE_STOP_STARTED,
                    {
                        "service": "quorum device",
                    }
                ),
                (
                    severity.INFO,
                    report_codes.SERVICE_STOP_SUCCESS,
                    {
                        "service": "quorum device",
                    }
                )
            ]
        )
예제 #5
0
    def test_success_not_used(self, mock_net_stop, mock_status):
        mock_status.return_value = ""

        lib.qdevice_stop(self.lib_env, "net", proceed_if_used=False)

        mock_net_stop.assert_called_once_with("mock_runner", "corosync-qnetd")
        assert_report_item_list_equal(
            self.mock_reporter.report_item_list,
            [
                (
                    severity.INFO,
                    report_codes.SERVICE_STOP_STARTED,
                    {
                        "service": "quorum device",
                    }
                ),
                (
                    severity.INFO,
                    report_codes.SERVICE_STOP_SUCCESS,
                    {
                        "service": "quorum device",
                    }
                )
            ]
        )
예제 #6
0
    def test_failed(self, mock_status):
        mock_status.return_value = ""
        self.lib_env.service_manager.stop.side_effect = StopServiceError(
            "test service", "test error")

        assert_raise_library_error(
            lambda: lib.qdevice_stop(self.lib_env, "net"),
            (
                severity.ERROR,
                reports.codes.SERVICE_ACTION_FAILED,
                {
                    "action": reports.const.SERVICE_ACTION_STOP,
                    "service": "test service",
                    "reason": "test error",
                    "node": "",
                    "instance": "",
                },
            ),
        )
        self.assertEqual(
            self.lib_env.service_manager.method_calls,
            [mock.call.stop("corosync-qnetd")],
        )
        assert_report_item_list_equal(
            self.mock_reporter.report_item_list,
            [(
                severity.INFO,
                reports.codes.SERVICE_ACTION_STARTED,
                {
                    "action": reports.const.SERVICE_ACTION_STOP,
                    "service": "quorum device",
                    "instance": "",
                },
            )],
        )
예제 #7
0
    def test_failed(self, mock_net_stop):
        mock_net_stop.side_effect = StopServiceError(
            "test service",
            "test error"
        )

        assert_raise_library_error(
            lambda: lib.qdevice_stop(self.lib_env, "net"),
            (
                severity.ERROR,
                report_codes.SERVICE_STOP_ERROR,
                {
                    "service": "test service",
                    "reason": "test error",
                }
            )
        )
        mock_net_stop.assert_called_once_with("mock_runner", "corosync-qnetd")
        assert_report_item_list_equal(
            self.mock_reporter.report_item_list,
            [
                (
                    severity.INFO,
                    report_codes.SERVICE_STOP_STARTED,
                    {
                        "service": "quorum device",
                    }
                )
            ]
        )
예제 #8
0
    def test_failed(self, mock_net_stop, mock_status):
        mock_status.return_value = ""
        mock_net_stop.side_effect = StopServiceError(
            "test service",
            "test error"
        )

        assert_raise_library_error(
            lambda: lib.qdevice_stop(self.lib_env, "net"),
            (
                severity.ERROR,
                report_codes.SERVICE_STOP_ERROR,
                {
                    "service": "test service",
                    "reason": "test error",
                }
            )
        )
        mock_net_stop.assert_called_once_with("mock_runner", "corosync-qnetd")
        assert_report_item_list_equal(
            self.mock_reporter.report_item_list,
            [
                (
                    severity.INFO,
                    report_codes.SERVICE_STOP_STARTED,
                    {
                        "service": "quorum device",
                    }
                )
            ]
        )
예제 #9
0
    def test_used_not_forced(self, mock_net_stop, mock_status):
        mock_status.return_value = 'Cluster "a_cluster":\n'

        assert_raise_library_error(lambda: lib.qdevice_stop(
            self.lib_env, "net", proceed_if_used=False))
        assert_report_item_list_equal(self.mock_reporter.report_item_list, [
            (severity.ERROR, report_codes.QDEVICE_USED_BY_CLUSTERS, {
                "clusters": ["a_cluster"],
            }, report_codes.FORCE_QDEVICE_USED),
        ])
        mock_net_stop.assert_not_called()
예제 #10
0
    def test_success_used_forced(self, mock_status):
        mock_status.return_value = 'Cluster "a_cluster":\n'

        lib.qdevice_stop(self.lib_env, "net", proceed_if_used=True)

        self.assertEqual(
            self.lib_env.service_manager.method_calls,
            [mock.call.stop("corosync-qnetd")],
        )
        assert_report_item_list_equal(
            self.mock_reporter.report_item_list,
            [
                (
                    severity.WARNING,
                    report_codes.QDEVICE_USED_BY_CLUSTERS,
                    {
                        "clusters": ["a_cluster"],
                    },
                ),
                (
                    severity.INFO,
                    reports.codes.SERVICE_ACTION_STARTED,
                    {
                        "action": reports.const.SERVICE_ACTION_STOP,
                        "service": "quorum device",
                        "instance": "",
                    },
                ),
                (
                    severity.INFO,
                    reports.codes.SERVICE_ACTION_SUCCEEDED,
                    {
                        "action": reports.const.SERVICE_ACTION_STOP,
                        "service": "quorum device",
                        "node": "",
                        "instance": "",
                    },
                ),
            ],
        )
예제 #11
0
 def test_success(self, mock_net_stop):
     lib.qdevice_stop(self.lib_env, "net")
     mock_net_stop.assert_called_once_with("mock_runner", "corosync-qnetd")
     assert_report_item_list_equal(
         self.mock_reporter.report_item_list,
         [
             (
                 severity.INFO,
                 report_codes.SERVICE_STOP_STARTED,
                 {
                     "service": "quorum device",
                 }
             ),
             (
                 severity.INFO,
                 report_codes.SERVICE_STOP_SUCCESS,
                 {
                     "service": "quorum device",
                 }
             )
         ]
     )
예제 #12
0
    def test_used_not_forced(self, mock_net_stop, mock_status):
        mock_status.return_value = 'Cluster "a_cluster":\n'

        assert_raise_library_error(
            lambda: lib.qdevice_stop(
                self.lib_env,
                "net",
                proceed_if_used=False
            ),
            (
                severity.ERROR,
                report_codes.QDEVICE_USED_BY_CLUSTERS,
                {
                    "clusters": ["a_cluster"],
                },
                report_codes.FORCE_QDEVICE_USED
            ),
        )
        mock_net_stop.assert_not_called()
예제 #13
0
 def test_stop(self):
     self.base_test(lambda: lib.qdevice_stop(self.lib_env, "bad model"))
예제 #14
0
 def test_stop(self):
     self.base_test(
         lambda: lib.qdevice_stop(self.lib_env, "bad model")
     )