Ejemplo n.º 1
0
def _get_activation_manager(monkeypatch):
    # TODO: Make this better testable: Extract site snapshot setting calculation
    monkeypatch.setattr(
        config, "sites", {
            "unit": {
                'alias': u'Der Master',
                'disable_wato': True,
                'disabled': False,
                'insecure': False,
                'multisiteurl': '',
                'persist': False,
                'replicate_ec': False,
                'replication': '',
                'timeout': 10,
                'user_login': True,
                'proxy': None,
            },
            "unit_remote_1": {
                'customer': 'provider',
                'url_prefix': '/unit_remote_1/',
                'status_host': None,
                'user_sync': None,
                'socket': ('tcp', {
                    'tls': ('encrypted', {
                        'verify': True
                    }),
                    'address': ('127.0.0.1', 6790)
                }),
                'replication': 'slave',
                'user_login': True,
                'insecure': False,
                'disable_wato': True,
                'disabled': False,
                'alias': u'unit_remote_1',
                'secret': 'watosecret',
                'replicate_mkps': False,
                'proxy': {
                    'params': None
                },
                'timeout': 2,
                'persist': False,
                'replicate_ec': True,
                'multisiteurl': 'http://localhost/unit_remote_1/check_mk/',
            },
        })

    activation_manager = activate_changes.ActivateChangesManager()
    activation_manager._sites = ["unit_remote_1"]
    activation_manager._changes_by_site = {"unit_remote_1": []}
    activation_manager._activation_id = "123"
    return activation_manager
Ejemplo n.º 2
0
    def page(self):
        check_csrf_token()
        user.need_permission("wato.activate")

        api_request = self.webapi_request()
        # ? type of activate_until is unclear
        activate_until = api_request.get("activate_until")
        if not activate_until:
            raise MKUserError("activate_until",
                              _('Missing parameter "%s".') % "activate_until")

        manager = activate_changes.ActivateChangesManager()
        manager.load()
        # ? type of api_request is unclear
        affected_sites_request = ensure_str(  # pylint: disable= six-ensure-str-bin-call
            api_request.get("sites", "").strip())
        if not affected_sites_request:
            affected_sites = manager.dirty_and_active_activation_sites()
        else:
            affected_sites = [
                SiteId(s) for s in affected_sites_request.split(",")
            ]

        comment: Optional[str] = api_request.get("comment", "").strip()

        activate_foreign = api_request.get("activate_foreign", "0") == "1"

        valuespec = _vs_activation("", manager.has_foreign_changes())
        if valuespec:
            valuespec.validate_value(
                {
                    "comment": comment,
                    "foreign": activate_foreign,
                },
                "activate",
            )

        if comment == "":
            comment = None

        activation_id = manager.start(
            sites=affected_sites,
            activate_until=ensure_str(activate_until),  # pylint: disable= six-ensure-str-bin-call
            comment=comment,
            activate_foreign=activate_foreign,
        )

        return {
            "activation_id": activation_id,
        }
Ejemplo n.º 3
0
    def page(self):
        user.need_permission("wato.activate")

        api_request = self.webapi_request()

        activation_id = api_request.get("activation_id")
        if not activation_id:
            raise MKUserError("activation_id",
                              _('Missing parameter "%s".') % "activation_id")

        manager = activate_changes.ActivateChangesManager()
        manager.load()
        manager.load_activation(activation_id)

        return manager.get_state()
Ejemplo n.º 4
0
def _get_activation_manager(monkeypatch, remote_site="unit_remote_1"):
    # TODO: Make this better testable: Extract site snapshot setting calculation
    remote_sites = {
        "unit_remote_1": {
            "customer":
            "provider",
            "url_prefix":
            "/unit_remote_1/",
            "status_host":
            None,
            "user_sync":
            None,
            "socket": (
                "tcp",
                {
                    "tls": ("encrypted", {
                        "verify": True
                    }),
                    "address": ("127.0.0.1", 6790)
                },
            ),
            "replication":
            "slave",
            "user_login":
            True,
            "insecure":
            False,
            "disable_wato":
            True,
            "disabled":
            False,
            "alias":
            "unit_remote_1",
            "secret":
            "watosecret",
            "replicate_mkps":
            False,
            "proxy": {
                "params": None
            },
            "timeout":
            2,
            "persist":
            False,
            "replicate_ec":
            True,
            "multisiteurl":
            "http://localhost/unit_remote_1/check_mk/",
        },
        "unit_remote_2": {
            "customer":
            "provider",
            "url_prefix":
            "/unit_remote_1/",
            "status_host":
            None,
            "user_sync":
            None,
            "socket": (
                "tcp",
                {
                    "tls": ("encrypted", {
                        "verify": True
                    }),
                    "address": ("127.0.0.1", 6790)
                },
            ),
            "replication":
            "slave",
            "user_login":
            True,
            "insecure":
            False,
            "disable_wato":
            True,
            "disabled":
            False,
            "alias":
            "unit_remote_1",
            "secret":
            "watosecret",
            "replicate_mkps":
            True,
            "proxy": {
                "params": None
            },
            "timeout":
            2,
            "persist":
            False,
            "replicate_ec":
            True,
            "multisiteurl":
            "http://localhost/unit_remote_1/check_mk/",
        },
    }

    monkeypatch.setattr(
        config,
        "sites",
        {
            "unit": {
                "alias": "Der Master",
                "disable_wato": True,
                "disabled": False,
                "insecure": False,
                "multisiteurl": "",
                "persist": False,
                "replicate_ec": False,
                "replication": "",
                "timeout": 10,
                "user_login": True,
                "proxy": None,
            },
            remote_site: remote_sites[remote_site],
        },
    )

    activation_manager = activate_changes.ActivateChangesManager()
    activation_manager._sites = [remote_site]
    activation_manager._changes_by_site = {remote_site: []}
    activation_manager._activation_id = "123"
    return activation_manager
Ejemplo n.º 5
0
def _create_sync_snapshot(snapshot_manager_class, monkeypatch, tmp_path):
    # TODO: Make this better testable: Extract site snapshot setting calculation
    activation_manager = activate_changes.ActivateChangesManager()
    activation_manager._sites = ["unit", "unit_remote_1"]
    activation_manager._changes_by_site = {"unit": [], "unit_remote_1": []}
    activation_manager._activation_id = "123"
    monkeypatch.setattr(
        config, "sites", {
            "unit": {
                'alias': u'Der Master',
                'disable_wato': True,
                'disabled': False,
                'insecure': False,
                'multisiteurl': '',
                'persist': False,
                'replicate_ec': False,
                'replication': '',
                'timeout': 10,
                'user_login': True,
                'proxy': None,
            },
            "unit_remote_1": {
                'customer': 'provider',
                'url_prefix': '/unit_remote_1/',
                'status_host': None,
                'user_sync': None,
                'socket': ('tcp', {
                    'tls': ('encrypted', {
                        'verify': True
                    }),
                    'address': ('127.0.0.1', 6790)
                }),
                'replication': 'slave',
                'user_login': True,
                'insecure': False,
                'disable_wato': True,
                'disabled': False,
                'alias': u'unit_remote_1',
                'secret': 'watosecret',
                'replicate_mkps': False,
                'proxy': {
                    'params': None
                },
                'timeout': 2,
                'persist': False,
                'replicate_ec': True,
                'multisiteurl': 'http://localhost/unit_remote_1/check_mk/',
            },
        })

    site_snapshot_settings = activation_manager._site_snapshot_settings()

    # Now create the snapshot
    work_dir = tmp_path / "activation"
    snapshot_manager = activate_changes.SnapshotManagerFactory.factory(
        str(work_dir), site_snapshot_settings)
    assert snapshot_manager.__class__.__name__ == snapshot_manager_class

    snapshot_settings = site_snapshot_settings["unit_remote_1"]

    snapshot_manager.generate_snapshots()
    assert Path(snapshot_settings.snapshot_path).exists()
    assert not Path(snapshot_settings.work_dir).exists()

    return snapshot_settings