From 4f3df2cd454e573ee9d52e1a942dff25dc75d62d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Justin=20B=C3=A9ra?= Date: Thu, 20 Jan 2022 23:00:45 +0100 Subject: [PATCH] Release 1.1.0 (#2) * refactor(restart-reload): use process.name instead of option * feat(options): * name option to match all processes * docs(options): * as name option * docs: version 1.1.0 --- CHANGELOG.md | 6 ++++++ docs/pm2_process_module.rst | 6 ++++++ galaxy.yml | 2 +- plugins/module_utils/pm2.py | 18 +++++++++++++----- plugins/modules/pm2_process.py | 7 ++++--- 5 files changed, 30 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 245604b..5a2ac0f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # CHANGELOG +## 1.1.0 (2022-01-20) + +### Features +- Adds "*" as reserved name option for the pm2_process module to match all PM2 processes + + ## 1.0.1 (2022-01-20) ### Documentation diff --git a/docs/pm2_process_module.rst b/docs/pm2_process_module.rst index d4066d0..57ad05d 100644 --- a/docs/pm2_process_module.rst +++ b/docs/pm2_process_module.rst @@ -111,6 +111,7 @@ Parameters
The name of the process.
+
If this option is set to *, the module will match all processes.
@@ -213,6 +214,11 @@ Examples name: example state: stopped + - name: Restart all PM2 processes + just1not2.pm2.pm2_process: + name: "*" + state: restarted + Return Values diff --git a/galaxy.yml b/galaxy.yml index de815d4..d355429 100644 --- a/galaxy.yml +++ b/galaxy.yml @@ -1,7 +1,7 @@ --- namespace: just1not2 name: pm2 -version: 1.0.1 +version: 1.1.0 readme: README.md authors: - Justin Béra diff --git a/plugins/module_utils/pm2.py b/plugins/module_utils/pm2.py index 6af25ad..1884f5e 100644 --- a/plugins/module_utils/pm2.py +++ b/plugins/module_utils/pm2.py @@ -80,6 +80,10 @@ def run(self, command): def get_matching_processes(self, name): ''' Returns the list of processes whose name matches the name module parameter ''' + # Returns every processes for specified reserved name "*" + if name == "*": + return self.processes + return [process for process in self.processes if process.name == name] def create_ecosystem_file(self, process_json): @@ -119,7 +123,11 @@ def delete_ecosystem_file(self, ecosystem_file_path): def create_process(self, name, file): ''' Create a PM2 process ''' - if not self.module.check_mode: + # Raises an error if the specified name is "*" (reserved) + if name == "*": + self.module.fail_json(msg="Cannot create PM2 process with name '*': reserved name") + + elif not self.module.check_mode: process_json = dict( name=name, script=file @@ -181,15 +189,15 @@ def execute_ecosystem_action(self, action, name, file): return delete_and_restart - def restart(self, name, file): + def restart(self, file): ''' Restarts the process ''' - return self.execute_ecosystem_action("restart", name, file) + return self.execute_ecosystem_action("restart", self.name, file) - def reload(self, name, file): + def reload(self, file): ''' Reloads the process ''' - return self.execute_ecosystem_action("reload", name, file) + return self.execute_ecosystem_action("reload", self.name, file) def stop(self): ''' Stops the process ''' diff --git a/plugins/modules/pm2_process.py b/plugins/modules/pm2_process.py index 1bc110d..90694ca 100644 --- a/plugins/modules/pm2_process.py +++ b/plugins/modules/pm2_process.py @@ -35,6 +35,7 @@ name: description: - The name of the process. + - If this option is set to *, the module will match all processes. type: str required: true state: @@ -125,7 +126,7 @@ def main(): (module.params["file"] and module.params["file"] != process.file) )] for process in diff_processes: - process.restart(module.params["name"], file=module.params["file"]) + process.restart(module.params["file"]) diff["before"] += "'%s' state: %s\n" % (process.name, process.status) diff["after"] += "'%s' state: restarted\n" % process.name changed = True @@ -146,7 +147,7 @@ def main(): else: # Restarts all matching processes for process in processes: - delete_and_restart = process.restart(module.params["name"], module.params["file"]) + delete_and_restart = process.restart(module.params["file"]) diff["before"] += "'%s' state: %s\n" % (process.name, process.status) diff["after"] += "'%s' state: %s\n" % (process.name, "deleted and restarted" if delete_and_restart else "restarted") changed = True @@ -167,7 +168,7 @@ def main(): else: # Reloads all matching processes for process in processes: - delete_and_restart = process.reload(module.params["name"], module.params["file"]) + delete_and_restart = process.reload(module.params["file"]) diff["before"] += "'%s' state: %s\n" % (process.name, process.status) diff["after"] += "'%s' state: %s\n" % (process.name, "deleted and restarted" if delete_and_restart else "reloaded") changed = True