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")
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)))
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)
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()
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
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))])