summaryrefslogtreecommitdiff
path: root/plugins/modules/vyos_banner.py
diff options
context:
space:
mode:
authoromnom62 <omnom62@outlook.com>2026-06-02 21:11:33 +1000
committeromnom62 <omnom62@outlook.com>2026-06-02 21:11:33 +1000
commit066ab3c5795cfc30337831708da1a73a449f404f (patch)
tree7050ba40f12ca00d2b196f7025907b7a74fc9020 /plugins/modules/vyos_banner.py
parente41f9f0f331c0175fa7f9676b9636131d2cc586a (diff)
downloadrest.vyos-066ab3c5795cfc30337831708da1a73a449f404f.tar.gz
rest.vyos-066ab3c5795cfc30337831708da1a73a449f404f.zip
Hostname module fixes
Diffstat (limited to 'plugins/modules/vyos_banner.py')
-rw-r--r--plugins/modules/vyos_banner.py58
1 files changed, 49 insertions, 9 deletions
diff --git a/plugins/modules/vyos_banner.py b/plugins/modules/vyos_banner.py
index b9df27d..4f734cd 100644
--- a/plugins/modules/vyos_banner.py
+++ b/plugins/modules/vyos_banner.py
@@ -31,7 +31,6 @@ options:
description:
- Which banner to configure.
type: str
- required: true
choices:
- pre-login
- post-login
@@ -47,9 +46,11 @@ options:
- Desired state of the banner configuration.
- C(merged) - set the banner if it differs from the current value.
- C(replaced) - replace the banner text unconditionally.
- - C(deleted) - remove the banner.
+ - C(deleted) - remove the banner. If C(config.banner) is omitted,
+ both pre-login and post-login banners are removed.
- C(gathered) - return the current banner in I(gathered) without
- making any changes.
+ making any changes. If C(config.banner) is omitted, all banners
+ are returned.
type: str
default: merged
choices:
@@ -97,12 +98,16 @@ EXAMPLES = r"""
text: "Welcome. Authorised access only."
state: replaced
-- name: Remove pre-login banner
+- name: Remove pre-login banner only
vyos.rest.vyos_banner:
config:
banner: pre-login
state: deleted
+- name: Remove all banners
+ vyos.rest.vyos_banner:
+ state: deleted
+
- name: Read current pre-login banner without changing it
vyos.rest.vyos_banner:
config:
@@ -110,6 +115,11 @@ EXAMPLES = r"""
state: gathered
register: result
+- name: Read all banners
+ vyos.rest.vyos_banner:
+ state: gathered
+ register: result
+
- name: Print gathered banner
ansible.builtin.debug:
msg: "Current banner: {{ result.gathered.text }}"
@@ -184,7 +194,7 @@ def main():
options=dict(
banner=dict(
type="str",
- required=True,
+ required=False,
choices=["pre-login", "post-login"],
),
text=dict(type="str"),
@@ -203,17 +213,47 @@ def main():
required_if=[
("state", "merged", ["config"]),
("state", "replaced", ["config"]),
- ("state", "deleted", ["config"]),
- ("state", "gathered", ["config"]),
],
supports_check_mode=True,
)
client = VyOSRestClient(module)
state = module.params["state"]
- config = module.params["config"]
- banner_type = config["banner"]
+ config = module.params["config"] or {}
+ banner_type = config.get("banner")
desired_text = config.get("text") or ""
+
+ # deleted without banner_type — delete all banners
+ if state == "deleted" and not banner_type:
+ commands = []
+ changed = False
+ for bt in ["pre-login", "post-login"]:
+ current = _get_current(client, bt)
+ if current.get("text"):
+ if not module.check_mode:
+ try:
+ client.configure_delete(_BANNER_PATH[bt])
+ except VyOSRestError as exc:
+ module.fail_json(msg=str(exc))
+ commands.append("delete {p}".format(p=" ".join(_BANNER_PATH[bt])))
+ changed = True
+ module.exit_json(changed=changed, commands=commands)
+
+ # gathered without banner_type — return all banners
+ if state == "gathered" and not banner_type:
+ gathered = {}
+ for bt in ["pre-login", "post-login"]:
+ current = _get_current(client, bt)
+ if current.get("text"):
+ gathered[bt] = current
+ module.exit_json(changed=False, gathered=gathered, commands=[])
+
+ # all other states require banner_type
+ if not banner_type:
+ module.fail_json(
+ msg="config.banner is required for state={0}".format(state),
+ )
+
path = _BANNER_PATH[banner_type]
commands = []
changed = False