Example #1
0
    def run(self, kwargs):
        job_log.debug(
            "Unconfigure stratagem timer step kwargs: {}".format(kwargs))

        config = kwargs["config"]

        if runningInDocker():
            api_key = os.getenv("API_KEY")
            api_user = os.getenv("API_USER")
            s = get_api_session_request(api_user, api_key)
            result = s.delete("{}/timer/unconfigure/{}".format(
                SERVER_HTTP_URL, config.id),
                              verify=False)

            if not result.ok:
                raise RuntimeError(result.reason)
        else:
            self.try_shell([
                "systemctl", "disable", "--now",
                "{}.timer".format(unit_name(config.id))
            ])

            os.unlink(timer_file(config.id))
            os.unlink(service_file(config.id))
            self.try_shell(["systemctl", "daemon-reload"])
 def set_state(self, state, intentional=False):
     job_log.debug("mt.set_state %s %s" % (state, intentional))
     super(ManagedTarget, self).set_state(state, intentional)
     if intentional:
         TargetOfflineAlert.notify_warning(self, self.state == "unmounted")
     else:
         TargetOfflineAlert.notify(self, self.state == "unmounted")
Example #3
0
 def on_success(self):
     obj = self.get_stateful_object()
     new_state = self.state_transition.new_state
     obj.set_state(new_state, intentional=True)
     obj.save()
     job_log.info("Job %d: StateChangeJob complete, setting state %s on %s" % (self.pk, new_state, obj))
     if hasattr(obj, "not_deleted"):
         job_log.debug("Job %d: %s" % (self.id, id(obj)))
         job_log.info("Job %d: not_deleted=%s" % (self.id, obj.not_deleted))
def _delete_target(target):
    if issubclass(target.downcast_class, ManagedMgs):
        from chroma_core.models.filesystem import ManagedFilesystem

        assert ManagedFilesystem.objects.filter(mgs=target).count() == 0

    target.mark_deleted()

    job_log.debug("_delete_target: %s %s" % (target, id(target)))
Example #5
0
    def run(self, kwargs):
        job_log.debug(
            "Configure stratagem timer step kwargs: {}".format(kwargs))
        # Create systemd timer

        config = kwargs["config"]

        iml_cmd = self.get_run_stratagem_command("/usr/bin/iml stratagem scan",
                                                 config)

        interval_in_seconds = config.interval / 1000
        # Create timer file
        timer_config = """# This file is part of IML
# This file will be overwritten automatically

[Unit]
Description=Start Stratagem run on {}

[Timer]
OnActiveSec={}
OnUnitActiveSec={}
AccuracySec=1us
Persistent=true

[Install]
WantedBy=timers.target
""".format(config.filesystem.id, interval_in_seconds, interval_in_seconds)

        service_config = """# This file is part of IML
# This file will be overwritten automatically

[Unit]
Description=Start Stratagem run on {}
{}

[Service]
Type=oneshot
EnvironmentFile=/var/lib/chroma/iml-settings.conf
ExecStart={}
""".format(config.filesystem.id,
           "After=iml-manager.target" if not runningInDocker() else "",
           iml_cmd)

        post_data = {
            "config_id": str(config.id),
            "file_prefix": "iml-stratagem",
            "timer_config": timer_config,
            "service_config": service_config,
        }

        result = requests.put("{}/configure/".format(TIMER_PROXY_PASS),
                              json=post_data)

        if not result.ok:
            raise RuntimeError(result.reason)
Example #6
0
    def _deps_satisfied(self, dep_cache):
        from chroma_core.lib.job import job_log

        result = self.all_deps(dep_cache).satisfied()

        job_log.debug("Job %s: deps satisfied=%s" % (self.id, result))
        for d in self.all_deps(dep_cache).all():
            satisfied = d.satisfied()
            job_log.debug(
                "  %s %s (actual %s) %s" % (d.stateful_object, d.acceptable_states, d.stateful_object.state, satisfied)
            )
        return result
    def on_success(self):
        job_log.debug("on_success: mark_deleted on filesystem %s" %
                      id(self.filesystem))

        from chroma_core.models.target import ManagedMdt, ManagedOst
        assert ManagedMdt.objects.filter(
            filesystem=self.filesystem).count() == 0
        assert ManagedOst.objects.filter(
            filesystem=self.filesystem).count() == 0
        self.filesystem.mark_deleted()

        super(RemoveFilesystemJob, self).on_success()
Example #8
0
    def run(self, args):
        scan_result = args["prev_result"]
        fs_name = args["fs_name"]

        _, stratagem_result, _ = scan_result

        # Send stratagem_results to time series database
        influx_entries = parse_stratagem_results_to_influx(
            temp_stratagem_measurement, fs_name, stratagem_result)
        job_log.debug("influx_entries: {}".format(influx_entries))

        record_stratagem_point("\n".join(influx_entries))

        return args["prev_result"]
    def run(self, args):
        scan_result = args["prev_result"]
        host = args["host"]
        unique_id = args["uuid"]
        fs_name = args["fs_name"]

        _, stratagem_result, mailbox_files = scan_result

        # Send stratagem_results to time series database
        influx_entries = parse_stratagem_results_to_influx(temp_stratagem_measurement, fs_name, stratagem_result)
        job_log.debug("influx_entries: {}".format(influx_entries))

        record_stratagem_point("\n".join(influx_entries))

        mailbox_files = map(lambda xs: (xs[0], "{}-{}".format(unique_id, xs[1])), mailbox_files)
        result = self.invoke_rust_agent_expect_result(host, "stream_fidlists_stratagem", mailbox_files)

        return result
Example #10
0
    def run(self, kwargs):
        job_log.debug(
            "Unconfigure stratagem timer step kwargs: {}".format(kwargs))

        config = kwargs["config"]

        if runningInDocker():
            result = requests.delete("{}/unconfigure/iml-stratagem/{}".format(
                TIMER_PROXY_PASS, config.id))

            if not result.ok:
                raise RuntimeError(result.reason)
        else:
            self.try_shell([
                "systemctl", "disable", "--now",
                "{}.timer".format(unit_name(config.id))
            ])

            os.unlink(timer_file(config.id))
            os.unlink(service_file(config.id))
            self.try_shell(["systemctl", "daemon-reload"])
    def on_success(self):
        self.stratagem_configuration.mark_deleted()
        job_log.debug("forgetting stratagem configuration")

        super(ForgetStratagemConfigurationJob, self).on_success()
    def run(self, kwargs):
        job_log.debug("Configure stratagem timer step kwargs: {}".format(kwargs))
        # Create systemd timer

        config = kwargs["config"]
        interval_in_seconds = config.interval / 1000

        if runningInDocker():
            iml_cmd = self.get_run_stratagem_command("/usr/bin/start-stratagem-scan", config, None)

            # Create timer file
            timer_config = """# This file is part of IML
# This file will be overwritten automatically

[Unit]
Description=Start Stratagem run on {}

[Timer]
OnActiveSec={}
OnUnitActiveSec={}
AccuracySec=1us
Persistent=true

[Install]
WantedBy=timers.target
""".format(
                config.filesystem.id, interval_in_seconds, interval_in_seconds
            )

            service_config = """# This file is part of IML
# This file will be overwritten automatically

[Unit]
Description=Start Stratagem run on {}

[Service]
Type=oneshot
EnvironmentFile=/var/lib/chroma/iml-settings.conf
ExecStart={}
""".format(
                config.filesystem.id, iml_cmd
            )

            post_data = {"config_id": str(config.id), "timer_config": timer_config, "service_config": service_config}

            api_key = os.getenv("API_KEY")
            api_user = os.getenv("API_USER")
            s = get_api_session_request(api_user, api_key)
            result = s.put("{}/timer/configure/".format(SERVER_HTTP_URL), json=post_data, verify=False)

            if not result.ok:
                raise RuntimeError(result.reason)
        else:
            iml_cmd = self.get_run_stratagem_command("/usr/bin/iml stratagem scan", config, "s")

            with open(timer_file(config.id), "w") as fn:
                fn.write(
                    """#  This file is part of IML
#  This file will be overwritten automatically
[Unit]
Description=Start Stratagem run on {}

[Timer]
OnActiveSec={}
OnUnitActiveSec={}
Persistent=true

[Install]
WantedBy=timers.target
""".format(
                        config.filesystem.id, interval_in_seconds, interval_in_seconds
                    )
                )

            with open(service_file(config.id), "w") as fn:
                fn.write(
                    """#  This file is part of IML
#  This file will be overwritten automatically
[Unit]
Description=Start Stratagem run on {}
After=iml-manager.target

[Service]
Type=oneshot
ExecStart={}
""".format(
                        config.filesystem.id, iml_cmd
                    )
                )
            self.try_shell(["systemctl", "daemon-reload"])
            self.try_shell(["systemctl", "enable", "--now", "{}.timer".format(unit_name(config.id))])