Exemplo n.º 1
0
def test_synchronize_site(mocked_responses, monkeypatch, edition_short,
                          tmp_path, mocker):
    if edition_short == "cme":
        pytest.skip("Seems faked site environment is not 100% correct")

    mocked_responses.add(
        method=responses.POST,
        url=
        "http://localhost/unit_remote_1/check_mk/automation.py?command=get-config-sync-state&debug=&secret=watosecret",
        body=repr(({
            'etc/check_mk/conf.d/wato/hosts.mk':
            (33204, 15, None,
             '0fc4df48a03c3e972a86c9d573bc04f6e2a5d91aa368d7f4ce4ec5cd93ee5725'
             ),
            'etc/check_mk/multisite.d/wato/global.mk':
            (33204, 6, None,
             '0e10d5fc5aedd798b68706c0189aeccadccae1fa6cc72324524293769336571c'
             ),
            'etc/htpasswd':
            (33204, 0, None,
             'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'
             )
        }, 0)),
    )

    mocked_responses.add(
        method=responses.POST,
        url=
        "http://localhost/unit_remote_1/check_mk/automation.py?command=receive-config-sync&debug=&secret=watosecret",
        body="True",
    )

    snapshot_data_collector_class = ("CMESnapshotDataCollector"
                                     if edition_short == "cme" else
                                     "CRESnapshotDataCollector")

    is_pre_17_site = False
    monkeypatch.setattr(cmk_version, "edition_short", lambda: edition_short)
    monkeypatch.setattr(utils, "is_pre_17_remote_site",
                        lambda s: is_pre_17_site)

    activation_manager = _get_activation_manager(monkeypatch)
    snapshot_settings = _create_sync_snapshot(activation_manager,
                                              snapshot_data_collector_class,
                                              monkeypatch,
                                              tmp_path,
                                              is_pre_17_site=is_pre_17_site,
                                              remote_site="unit_remote_1")

    site_activation = activate_changes.ActivateChangesSite(
        "unit_remote_1",
        snapshot_settings,
        activation_manager._activation_id,
        prevent_activate=True)

    site_activation._time_started = time.time()
    site_activation._synchronize_site()
Exemplo n.º 2
0
def test_synchronize_pre_17_site(monkeypatch, edition: cmk_version.Edition,
                                 tmp_path, mocker):
    snapshot_data_collector_class = ("CMESnapshotDataCollector"
                                     if edition is cmk_version.Edition.CME else
                                     "CRESnapshotDataCollector")

    if edition is cmk_version.Edition.CME:
        pytest.skip("Seems faked site environment is not 100% correct")

    is_pre_17_site = True
    monkeypatch.setattr(utils, "is_pre_17_remote_site",
                        lambda s: is_pre_17_site)

    activation_manager = _get_activation_manager(monkeypatch)
    snapshot_settings = _create_sync_snapshot(
        activation_manager,
        snapshot_data_collector_class,
        monkeypatch,
        tmp_path,
        is_pre_17_site=is_pre_17_site,
        remote_site="unit_remote_1",
        edition=edition,
    )

    site_activation = activate_changes.ActivateChangesSite(
        "unit_remote_1",
        snapshot_settings,
        activation_manager._activation_id,
        prevent_activate=True)

    # Could be better to mock requests instead of our own code
    get_url_mock = mocker.patch("cmk.gui.watolib.automations.get_url",
                                return_value="True")

    site_activation._time_started = time.time()
    site_activation._synchronize_site()

    get_url_mock.assert_called_once()
    args, kwargs = get_url_mock.call_args

    assert args == (
        "http://localhost/unit_remote_1/check_mk/automation.py?command=push-snapshot&debug=&secret=watosecret&siteid=unit_remote_1",
        False,
    )
    assert list(kwargs.keys()) == ["files"]
    assert list(kwargs["files"].keys()) == ["snapshot"]
    assert isinstance(kwargs["files"]["snapshot"], BufferedIOBase)

    file_name = kwargs["files"]["snapshot"].name  # type: ignore[attr-defined]
    assert file_name == snapshot_settings.snapshot_path
Exemplo n.º 3
0
def test_synchronize_pre_17_site(monkeypatch, edition_short, tmp_path, mocker):
    snapshot_data_collector_class = ("CMESnapshotDataCollector"
                                     if edition_short == "cme" else
                                     "CRESnapshotDataCollector")

    if edition_short == "cme":
        pytest.skip("Seems faked site environment is not 100% correct")

    is_pre_17_site = True
    monkeypatch.setattr(cmk_version, "edition_short", lambda: edition_short)
    monkeypatch.setattr(activate_changes, "_is_pre_17_remote_site",
                        lambda s: is_pre_17_site)

    activation_manager = _get_activation_manager(monkeypatch)
    snapshot_settings = _create_sync_snapshot(activation_manager,
                                              snapshot_data_collector_class,
                                              monkeypatch,
                                              tmp_path,
                                              is_pre_17_site=is_pre_17_site)

    site_activation = activate_changes.ActivateChangesSite(
        "unit_remote_1",
        snapshot_settings,
        activation_manager._activation_id,
        prevent_activate=True)

    # Could be better to mock requests instead of our own code
    get_url_mock = mocker.patch("cmk.gui.watolib.automations.get_url",
                                return_value="True")

    site_activation._time_started = time.time()
    site_activation._synchronize_site()

    get_url_mock.assert_called_once()
    args, kwargs = get_url_mock.call_args

    assert args == (
        'http://localhost/unit_remote_1/check_mk/automation.py?command=push-snapshot&debug=&secret=watosecret&siteid=unit_remote_1',
        False)
    assert list(kwargs.keys()) == ["files"]
    assert list(kwargs["files"].keys()) == ["snapshot"]
    # TODO: Add correct type once we are on Python 3 only
    if sys.version_info[0] >= 3:
        assert isinstance(kwargs["files"]["snapshot"], IOBase)
    else:
        assert isinstance(kwargs["files"]["snapshot"], file)  # pylint: disable=undefined-variable

    file_name = kwargs["files"]["snapshot"].name  # type: ignore[attr-defined]
    assert file_name == snapshot_settings.snapshot_path
Exemplo n.º 4
0
def test_synchronize_site(
    mocked_responses: responses.RequestsMock,
    monkeypatch: pytest.MonkeyPatch,
    edition: cmk_version.Edition,
    tmp_path: Path,
    mocker: MockerFixture,
):
    if edition is cmk_version.Edition.CME:
        pytest.skip("Seems faked site environment is not 100% correct")

    mocked_responses.add(
        method=responses.POST,
        url=
        "http://localhost/unit_remote_1/check_mk/automation.py?command=get-config-sync-state",
        body=repr((
            {
                "etc/check_mk/conf.d/wato/hosts.mk": (
                    33204,
                    15,
                    None,
                    "0fc4df48a03c3e972a86c9d573bc04f6e2a5d91aa368d7f4ce4ec5cd93ee5725",
                ),
                "etc/check_mk/multisite.d/wato/global.mk": (
                    33204,
                    6,
                    None,
                    "0e10d5fc5aedd798b68706c0189aeccadccae1fa6cc72324524293769336571c",
                ),
                "etc/htpasswd": (
                    33204,
                    0,
                    None,
                    "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
                ),
            },
            0,
        )),
    )

    mocked_responses.add(
        method=responses.POST,
        url=
        "http://localhost/unit_remote_1/check_mk/automation.py?command=receive-config-sync",
        body="True",
    )

    snapshot_data_collector_class = ("CMESnapshotDataCollector"
                                     if edition is cmk_version.Edition.CME else
                                     "CRESnapshotDataCollector")

    is_pre_17_site = False
    monkeypatch.setattr(cmk_version, "is_raw_edition",
                        lambda: edition is cmk_version.Edition.CRE)
    monkeypatch.setattr(cmk_version, "is_managed_edition",
                        lambda: edition is cmk_version.Edition.CME)
    monkeypatch.setattr(utils, "is_pre_17_remote_site",
                        lambda s: is_pre_17_site)

    activation_manager = _get_activation_manager(monkeypatch)
    assert activation_manager._activation_id is not None
    snapshot_settings = _create_sync_snapshot(
        activation_manager,
        snapshot_data_collector_class,
        monkeypatch,
        tmp_path,
        is_pre_17_site=is_pre_17_site,
        remote_site=SiteId("unit_remote_1"),
        edition=edition,
    )

    site_activation = activate_changes.ActivateChangesSite(
        SiteId("unit_remote_1"),
        snapshot_settings,
        activation_manager._activation_id,
        prevent_activate=True,
    )

    site_activation._time_started = time.time()
    site_activation._synchronize_site()