summaryrefslogtreecommitdiffstats
path: root/collections-debian-merged/ansible_collections/wti/remote
diff options
context:
space:
mode:
Diffstat (limited to 'collections-debian-merged/ansible_collections/wti/remote')
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/FILES.json593
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/MANIFEST.json37
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/README.md55
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/docs/cpm_alarm_info.rst118
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/docs/cpm_config_backup.rst326
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/docs/cpm_config_restore.rst335
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/docs/cpm_current_info.rst152
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/docs/cpm_firmware_info.rst124
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/docs/cpm_interface_config.rst191
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/docs/cpm_interface_info.rst125
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/docs/cpm_iptables_config.rst140
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/docs/cpm_iptables_info.rst115
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/docs/cpm_plugconfig.rst373
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/docs/cpm_plugcontrol.rst354
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/docs/cpm_power_info.rst152
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/docs/cpm_serial_port_config.rst538
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/docs/cpm_serial_port_info.rst347
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/docs/cpm_snmp_config.rst219
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/docs/cpm_snmp_info.rst123
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/docs/cpm_status_info.rst196
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/docs/cpm_temp_info.rst124
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/docs/cpm_time_config.rst161
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/docs/cpm_time_info.rst124
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/docs/cpm_user.rst433
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_config/cpm_config_backup.yml26
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_config/cpm_config_restore.yml27
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_interface/interface_config.yml31
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_interface/interface_info.yml26
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_iptables/iptables_config.yml35
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_iptables/iptables_info.yml25
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_plugconfig/plug_config.yml32
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_plugconfig/plug_info.yml28
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_serial_ports/serial_ports_config.yml39
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_serial_ports/serial_ports_info.yml27
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_snmp/snmp_config.yml54
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_snmp/snmp_info.yml29
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_status/alarm_info.yml25
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_status/current_info.yml27
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_status/firmware_info.yml25
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_status/power_info.yml27
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_status/status_info.yml25
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_status/temp_info.yml25
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_time_date/time_config.yml29
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_time_date/time_info.yml25
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_user/user_add.yml45
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_user/user_delete.yml33
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_user/user_edit.yml37
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_user/user_get.yml33
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/plugins/lookup/cpm_metering.py174
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/plugins/lookup/cpm_status.py164
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_alarm_info.py179
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_config_backup.py204
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_config_restore.py208
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_current_info.py241
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_firmware_info.py187
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_interface_config.py509
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_interface_info.py195
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_iptables_config.py295
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_iptables_info.py175
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_plugconfig.py272
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_plugcontrol.py234
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_power_info.py242
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_serial_port_config.py360
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_serial_port_info.py221
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_snmp_config.py603
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_snmp_info.py193
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_status_info.py307
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_temp_info.py187
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_time_config.py410
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_time_info.py190
-rw-r--r--collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_user.py355
71 files changed, 12295 insertions, 0 deletions
diff --git a/collections-debian-merged/ansible_collections/wti/remote/FILES.json b/collections-debian-merged/ansible_collections/wti/remote/FILES.json
new file mode 100644
index 00000000..4df6d7f4
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/FILES.json
@@ -0,0 +1,593 @@
+{
+ "files": [
+ {
+ "name": ".",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "README.md",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "aa1b9ff95044668b38a8ce5b013af4decb8ebdf1ccd47c83c4ae7009df4dd47e",
+ "format": 1
+ },
+ {
+ "name": "playbooks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_config",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_config/cpm_config_restore.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "dbe239f7c111ca703a49427172570006f7402d2c32344b66d1dc9a4b9d22228a",
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_config/cpm_config_backup.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "eb8a081ede1ffa31a913b4e26a0f2d0a4ee333f99ddd8097e946c4a3a08a0553",
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_time_date",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_time_date/time_info.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "916778518146bc6c6c9186da9ecf8fbe609e3cb19d0b9648e9078c9246e304f3",
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_time_date/time_config.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "9e2db79afc89be1c9f2024f109971997b19c7db23b18b3001e1499ed471ed260",
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_serial_ports",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_serial_ports/serial_ports_config.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "4f33dde1077d51ef83dedbd0b841627ec10e0616f6d7063cd2412ae4759d0d85",
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_serial_ports/serial_ports_info.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "4322da1b67fabbc886f0f35ced2cdaff64dc88f57540cf54e7d0f61f29725dee",
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_plugconfig",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_plugconfig/plug_info.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "aa407e11ef8b0de377d2d84f8bf26972101defd8f4b5380f6d58ca8b437f4ee4",
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_plugconfig/plug_config.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8d5fd4f3ba38d7930a0c7b01858eef73c86d8ade20b14043a8d1bde5c23511b6",
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_snmp",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_snmp/snmp_info.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "a53441daa135f40ef99f5e1f4d79272be9427c6a2ac41c36cb5aa262bd5b1ec4",
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_snmp/snmp_config.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "15d3d0a3362aa2d135781b469f62fc5feb955dfec8f1b74f4afaba46aaa3f9fa",
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_interface",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_interface/interface_info.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "5ba6d3dc633ad8583652eee1fe568e87eea9470c8ab644640ce7e2be9acb2ce2",
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_interface/interface_config.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "bf0e98113eeb6198786befc06ba58da3ef91b64b8bbed2d404b90b228b39e95c",
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_iptables",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_iptables/iptables_info.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "e6d3091a82fc4e0a907761b8623b2a5481249040e45d4adec2e5184dc0106f0e",
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_iptables/iptables_config.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "ecf4bcbfe7833fc7e7cf028b1782ade9729ee6a22ce903b658571b27abeb31d2",
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_status",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_status/power_info.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "784e761c9f17b4d633e115f136df2da004e2123fce1d46a8578819cf240ba87c",
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_status/status_info.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "d27146b1f8948c8329aff03b4a1165d62ee1625a9431efd117908d87662749e9",
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_status/current_info.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "81250969b8389fcf7b5dfca43c784687048a0802a2bb2ada7db13eb9eaa4d814",
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_status/alarm_info.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "c7eaeab3f0e4683b27db4c758823dead0f308c6f7e0813162b9ab3ac1eb172e9",
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_status/temp_info.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "6b433ae836d3a1c671e5fbcad371b9b401cd84012ef66cb259777edad2f24751",
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_status/firmware_info.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "774637beb1cead454af209d1f2ddc82e73ddaf3bfdd0cebb62d4aa9d663e3a1a",
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_user",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_user/user_edit.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "83a15cc70c80a409a479fea9837c82fb990fe5840202e1c6e60227e56f3f7347",
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_user/user_add.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "736f066e4b3ea6cfd114cb43325a36a3cbcdb0fd89dc94c7bf9b021b2e73805c",
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_user/user_get.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "1e2751e5dbb52433d99d86bed47a2ceb06b12aceffc897383e698d5f9afe3a66",
+ "format": 1
+ },
+ {
+ "name": "playbooks/cpm_user/user_delete.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "5a5012adaf8996706bc4c81cad7f92e7861652cd8e44481be3c3b740523ce3d8",
+ "format": 1
+ },
+ {
+ "name": "docs",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "docs/cpm_interface_info.rst",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "37d821ee857983934e486e4963bab63e945df71061a47d5a3cb77e3ffb8583b4",
+ "format": 1
+ },
+ {
+ "name": "docs/cpm_interface_config.rst",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "05b6d8e4464b9894c988d2ecbc7ced72c7f16c0cd6de0a4445a7e4d283dff7cc",
+ "format": 1
+ },
+ {
+ "name": "docs/cpm_status_info.rst",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "b356a786f368b4fb4d13418c935ada7ffe2603350f50e023b123b44db863dc5f",
+ "format": 1
+ },
+ {
+ "name": "docs/cpm_serial_port_config.rst",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "541b3b05b847880d6c830e01e53fc2b0788c9020965fe6760afae4f3e201df7e",
+ "format": 1
+ },
+ {
+ "name": "docs/cpm_alarm_info.rst",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "311ce42caebd46e18a9e1c46afa621a943ce3ab3de02e037cd8e645164dfc1b7",
+ "format": 1
+ },
+ {
+ "name": "docs/cpm_config_backup.rst",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "27ff85954432b9bd1ce7933009721f832848b06fc442ecb300e8aa7c831e977f",
+ "format": 1
+ },
+ {
+ "name": "docs/cpm_firmware_info.rst",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "d29eb729f2edd3a405f6907e15c4536c752350626fe3722c7a8aeb25f91bfce0",
+ "format": 1
+ },
+ {
+ "name": "docs/cpm_current_info.rst",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "58f0168d83c287533e340accaa5569103a85f3c16cafc6a10654b11d66a9d66f",
+ "format": 1
+ },
+ {
+ "name": "docs/cpm_snmp_config.rst",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "6553794fced8d5fb2788274ced25b02c5205933976be5455ea28321596e88e5a",
+ "format": 1
+ },
+ {
+ "name": "docs/cpm_plugcontrol.rst",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "a8b3403a4fc51092c86bbee4da7f9a73cf01427ec694c2806b420ab421126173",
+ "format": 1
+ },
+ {
+ "name": "docs/cpm_temp_info.rst",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "f3adeb2028ee2a88c07f023c220efa1e5720282a8cb22f8f92f5c46d7f05d5de",
+ "format": 1
+ },
+ {
+ "name": "docs/cpm_user.rst",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "0d8d193c2bd7e25e35f758c6e75f9e29d33a1e7b5d5991534b152f64c65cfcc4",
+ "format": 1
+ },
+ {
+ "name": "docs/cpm_power_info.rst",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "f5ebc3c0a0fc7e5ee98d72e39134e46d9a24bab2723ac7d6da401159b367399c",
+ "format": 1
+ },
+ {
+ "name": "docs/cpm_config_restore.rst",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "0c790e9d271ac2ca7cf954f09cf258560d49b6d58017f3c01803cc67455e6fb1",
+ "format": 1
+ },
+ {
+ "name": "docs/cpm_plugconfig.rst",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "de5dd13ef9a742d1d0196787f4f1b9f29c62ef2adf0b0c93bfb0d05ae4df591a",
+ "format": 1
+ },
+ {
+ "name": "docs/cpm_iptables_config.rst",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "7c1d802b3497e5cecc513515f1d848149b8d1465a2e54964f4a424abb6403c5e",
+ "format": 1
+ },
+ {
+ "name": "docs/cpm_serial_port_info.rst",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "dc25e1c0d7839a01e6dac56036f03382f2c8de6d488caff5eacdb511b2194616",
+ "format": 1
+ },
+ {
+ "name": "docs/cpm_time_config.rst",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "2c326c5b569a6db5a7fa83ab802856409fa209166692cc522a73f3a3dcc1750a",
+ "format": 1
+ },
+ {
+ "name": "docs/cpm_iptables_info.rst",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "4e67fa038d1d50f50f6ef726b74e8618acee49c051f011128d266acb15a95e27",
+ "format": 1
+ },
+ {
+ "name": "docs/cpm_snmp_info.rst",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "dd726d60048d7bd4ab701c03d671994fd87e8c8c9e4aac21609ca7ede98b0504",
+ "format": 1
+ },
+ {
+ "name": "docs/cpm_time_info.rst",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "6b8217ed3917c21d97847332b31ff3e6576bf31477fb7086ee4b7baca002e383",
+ "format": 1
+ },
+ {
+ "name": "plugins",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "plugins/lookup",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "plugins/lookup/cpm_metering.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "f3521afdfff4abc1e172fa8f9111940ecef0a986edc810a63227ff5a1dedf09d",
+ "format": 1
+ },
+ {
+ "name": "plugins/lookup/cpm_status.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "0b9c7c1e1f4a8ce97918b078c539a00dcb267aa6c9c7af4b169a9e6be0897edf",
+ "format": 1
+ },
+ {
+ "name": "plugins/modules",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/cpm_user.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "d71a1851df4a9d2b8ef2f140f97a3815e8a94eb8b7dfb930c8d1d8ef075b77c4",
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/cpm_temp_info.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "d18bd5670143fcd1c73c1159bb3ce9dae9fa1b5cecc63491bac0b8206928ed46",
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/cpm_status_info.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "76ee103ba7cb22b132f5e0626b1f14ac7a45e73e7bedd690b040c777e240a7b8",
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/cpm_interface_info.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "24c41b6119e67cd8f8d8d126fa37e43cb113578fe71878dc36bc9cf7bae3761b",
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/cpm_config_restore.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "d43fd82c01b03479aaa082e4ed771201977e6d1edbc74c653e67511cfb28bf8d",
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/cpm_power_info.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "f6f6ac38dc63c9a866fed7f041e15b848e117847f63f922d799a6cd7099cc2f1",
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/cpm_plugconfig.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "211b9861a5cb5f33f2e8ff2b7d64b2b4252eb0504c5f86df7dfa1c9d722a3aab",
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/cpm_iptables_config.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "4d889474e681715e6b5048f00022c82764833236333860d8f0dd5be85624a606",
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/cpm_snmp_config.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "c99aa8e3a5af4804432b56407323c4dd0d14339b183e516a540ffcda956a742f",
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/cpm_iptables_info.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "777b5e25d173aa8b3cbfa90e756f7adb1344c678b5133d8fc4bde14367936691",
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/cpm_firmware_info.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "01e4bc6215871dad51ee7041595918848b8c26d82dd5190502a62bff10ccfeab",
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/cpm_interface_config.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "9626f50e0c572f566b308f67cdc2f58886d2db4ed206d60870f61fe7a8e8336f",
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/cpm_snmp_info.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "2d07b11d6ab98a92dd256d1078b51cbc9317d60b32626dca0a6059de300e3993",
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/cpm_alarm_info.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "863f3aa02d6cb2ef73bcd20ee6890e688dcdbf6df019a172731f78bbb479c1f2",
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/cpm_time_config.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "62cae0b898fece2c775fca3bd6e5e40eb5894b816698f82b757405a6d51ad710",
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/cpm_current_info.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "a4a52627d5ddc39852f00ceed484caac125c3c95b94ba26eefc20a4fffab2af0",
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/cpm_config_backup.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "2ad75ec95d411bbead3e65a6f8df72af8ca31c4628c7b21b1e68227d2ce770d0",
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/cpm_serial_port_config.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "873ea3be079751bb80ddba3ae79e0c102b547b47c07ff11fa9669c9ce42ec292",
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/cpm_time_info.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "5fa2d0a1f27db3693a5bf382c99480feb9918d4acde04a2452d603f774e83f26",
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/cpm_plugcontrol.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "a4b322bc25cf304d603b1bbd465ff227eb819e4c6fd4a573aca0fdfa85054c8e",
+ "format": 1
+ },
+ {
+ "name": "plugins/modules/cpm_serial_port_info.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8f8b5bda730575da3990ca42a157b2afde427e66a467f02fe4ed2eacae60e971",
+ "format": 1
+ }
+ ],
+ "format": 1
+} \ No newline at end of file
diff --git a/collections-debian-merged/ansible_collections/wti/remote/MANIFEST.json b/collections-debian-merged/ansible_collections/wti/remote/MANIFEST.json
new file mode 100644
index 00000000..82c267f8
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/MANIFEST.json
@@ -0,0 +1,37 @@
+{
+ "collection_info": {
+ "namespace": "wti",
+ "name": "remote",
+ "version": "1.0.1",
+ "authors": [
+ "Ken Partridge <kenp@wti.com> (@wtinetworkgear)"
+ ],
+ "readme": "README.md",
+ "tags": [
+ "wti",
+ "remote",
+ "oob",
+ "pdu",
+ "management",
+ "control"
+ ],
+ "description": "Modules for interacting with WTI remote OOB and PDU devices",
+ "license": [
+ "GPL-2.0-or-later"
+ ],
+ "license_file": null,
+ "dependencies": {},
+ "repository": "https://github.com/wtinetworkgear/wti-collection",
+ "documentation": "https://github.com/wtinetworkgear/wti-collection/tree/master/wti/remote/docs",
+ "homepage": "https://www.wti.com",
+ "issues": "https://github.com/wtinetworkgear/wti-collection/issues"
+ },
+ "file_manifest_file": {
+ "name": "FILES.json",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "3307fdd44af809c0dce750ce31d410f6c3f0f385ebe7d3f855abc4a031380ed8",
+ "format": 1
+ },
+ "format": 1
+} \ No newline at end of file
diff --git a/collections-debian-merged/ansible_collections/wti/remote/README.md b/collections-debian-merged/ansible_collections/wti/remote/README.md
new file mode 100644
index 00000000..873c03d0
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/README.md
@@ -0,0 +1,55 @@
+WTI Ansible Collection
+=========
+
+This [Ansible](https://www.ansible.com/) collection provides a set of platform dependent configuration
+ management modules specifically designed for [WTI OOB and PDU devices](https://wti.com/) .
+
+Requirements
+------------
+
+* Python 2.7 or 3.5+
+* Ansible 2.9.0 or later
+* Supported WTI firmware (DSM/CPM v6.58+, VMR 2.15+)
+* Configuration command needs a user with Administrator privileges
+
+
+
+Installation
+-------
+
+
+Through Galaxy:
+
+```
+ansible-galaxy collection install wti.remote
+```
+
+
+Inventory Variables
+--------------
+
+The common variables that should be defined in your inventory for your WTI host are:
+
+* `cpm_url`: IP address or name of device.
+* `cpm_username`: Username for device in `plaintext` format
+* `cpm_password`: Password for device in `plaintext` format
+* `use_https`: Set `True` or `False` depending on if Ansible should use a secure https connection
+* `validate_certs`: Set `True` or `False` depending on if Ansible should attempt to validate certificates
+* `use_proxy`: Set `True` or `False` depending if Ansible should bypass environment proxies to connect to the WTI device
+
+
+Contribution
+-------
+At WTI we're dedicated to ensuring the quality of our products, if you find any
+issues at all please open an issue on our [Github](https://github.com/wtinetworkgear/wti-collection) and we'll be sure to respond promptly!
+Or you can always email us directly at support@wti.com
+
+
+License
+-------
+
+Apache-2.0
+
+Author Information
+------------------
+ - Ken Partridge (@wtinetworkgear)
diff --git a/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_alarm_info.rst b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_alarm_info.rst
new file mode 100644
index 00000000..1f3de2a2
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_alarm_info.rst
@@ -0,0 +1,118 @@
+
+cpm_alarm_info -- Get alarm information from WTI OOB and PDU devices
+====================================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Get temperature alarm from WTI OOB and PDU devices
+
+
+
+
+
+
+Parameters
+----------
+
+ cpm_url (True, str, None)
+ This is the URL of the WTI device to send the module.
+
+
+ cpm_username (True, str, None)
+ This is the Username of the WTI device to send the module.
+
+
+ cpm_password (True, str, None)
+ This is the Password of the WTI device to send the module.
+
+
+ use_https (False, bool, True)
+ Designates to use an https connection or http connection.
+
+
+ validate_certs (False, bool, True)
+ If false, SSL certificates will not be validated. This should only be used
+
+ on personally controlled sites using self-signed certificates.
+
+
+ use_proxy (False, bool, False)
+ Flag to control if the lookup will observe HTTP proxy environment variables when present.
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - Use ``groups/cpm`` in ``module_defaults`` to set common options used between CPM modules.)
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ - name: Get the Alarm Information for a WTI device
+ cpm_alarm_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+
+ - name: Get the Alarm Information for a WTI device
+ cpm_alarm_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: false
+ validate_certs: false
+
+
+
+Return Values
+-------------
+
+ data (always, complex, )
+ The output JSON returned from the commands sent
+
+ alarms (success, dict, [{'name': 'OVER CURRENT (INITIAL)', 'status': '0'}, {'name': 'OVER CURRENT (CRITICAL)', 'status': '0'}, {'name': 'OVER TEMPERATURE (INITIAL)', 'status': '0'}])
+ Current alarm status of the WTI device after module execution.
+
+ status (always, dict, {'code': '0', 'text': 'OK'})
+ Return status after module completion
+
+
+
+
+
+Status
+------
+
+
+
+
+- This is not guaranteed to have a backwards compatible interface. *[preview]*
+
+
+- This is maintained by community.
+
+
+
+Authors
+~~~~~~~
+
+- Western Telematic Inc. (@wtinetworkgear)
+
diff --git a/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_config_backup.rst b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_config_backup.rst
new file mode 100644
index 00000000..14abf36f
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_config_backup.rst
@@ -0,0 +1,326 @@
+
+cpm_config_backup -- Get parameters from WTI OOB and PDU devices
+================================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Get parameters from WTI OOB and PDU devices
+
+
+
+
+
+
+Parameters
+----------
+
+ cpm_url (True, str, None)
+ This is the URL of the WTI device to get the parameters from.
+
+
+ cpm_username (True, str, None)
+ This is the Username of the WTI device to get the parameters from.
+
+
+ cpm_password (True, str, None)
+ This is the Password of the WTI device to get the parameters from.
+
+
+ cpm_path (False, str, /tmp/)
+ This is the directory path to store the WTI device configuration file.
+
+
+ use_https (False, bool, True)
+ Designates to use an https connection or http connection.
+
+
+ validate_certs (False, bool, True)
+ If false, SSL certificates will not be validated. This should only be used
+
+ on personally controlled sites using self-signed certificates.
+
+
+ use_proxy (False, bool, False)
+ F
+
+ l
+
+ a
+
+ g
+
+
+
+ t
+
+ o
+
+
+
+ c
+
+ o
+
+ n
+
+ t
+
+ r
+
+ o
+
+ l
+
+
+
+ i
+
+ f
+
+
+
+ t
+
+ h
+
+ e
+
+
+
+ l
+
+ o
+
+ o
+
+ k
+
+ u
+
+ p
+
+
+
+ w
+
+ i
+
+ l
+
+ l
+
+
+
+ o
+
+ b
+
+ s
+
+ e
+
+ r
+
+ v
+
+ e
+
+
+
+ H
+
+ T
+
+ T
+
+ P
+
+
+
+ p
+
+ r
+
+ o
+
+ x
+
+ y
+
+
+
+ e
+
+ n
+
+ v
+
+ i
+
+ r
+
+ o
+
+ n
+
+ m
+
+ e
+
+ n
+
+ t
+
+
+
+ v
+
+ a
+
+ r
+
+ i
+
+ a
+
+ b
+
+ l
+
+ e
+
+ s
+
+
+
+ w
+
+ h
+
+ e
+
+ n
+
+
+
+ p
+
+ r
+
+ e
+
+ s
+
+ e
+
+ n
+
+ t
+
+ .
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - Use ``groups/cpm`` in ``module_defaults`` to set common options used between CPM modules.)
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ - name: Get the Parameters for a WTI device
+ cpm_config_backup:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+
+
+
+Return Values
+-------------
+
+ data (always, complex, )
+ The XML configuration of the WTI device queried
+
+ status (success, list, [{'code': 0, 'savedfilename': '/tmp/wti-192-10-10-239-2020-02-13T16-05-57.xml', 'text': 'ok'}])
+ List of status returns from backup operation
+
+
+
+
+
+Status
+------
+
+
+
+
+- This is not guaranteed to have a backwards compatible interface. *[preview]*
+
+
+- This is maintained by community.
+
+
+
+Authors
+~~~~~~~
+
+- W
+- e
+- s
+- t
+- e
+- r
+- n
+-
+- T
+- e
+- l
+- e
+- m
+- a
+- t
+- i
+- c
+-
+- I
+- n
+- c
+- .
+-
+- (
+- @
+- w
+- t
+- i
+- n
+- e
+- t
+- w
+- o
+- r
+- k
+- g
+- e
+- a
+- r
+- )
+
diff --git a/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_config_restore.rst b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_config_restore.rst
new file mode 100644
index 00000000..15689f17
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_config_restore.rst
@@ -0,0 +1,335 @@
+
+cpm_config_restore -- Get parameters from WTI OOB and PDU devices
+=================================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Get parameters from WTI OOB and PDU devices
+
+
+
+
+
+
+Parameters
+----------
+
+ cpm_url (True, str, None)
+ This is the URL of the WTI device to get the parameters from.
+
+
+ cpm_username (True, str, None)
+ This is the Username of the WTI device to get the parameters from.
+
+
+ cpm_password (True, str, None)
+ This is the Password of the WTI device to get the parameters from.
+
+
+ cpm_path (False, str, /tmp/)
+ This is the directory path to the existing the WTI device configuration file.
+
+
+ cpm_filename (True, str, None)
+ This is the filename of the existing WTI device configuration file.
+
+
+ use_https (False, bool, True)
+ Designates to use an https connection or http connection.
+
+
+ validate_certs (False, bool, True)
+ If false, SSL certificates will not be validated. This should only be used
+
+ on personally controlled sites using self-signed certificates.
+
+
+ use_proxy (False, bool, False)
+ F
+
+ l
+
+ a
+
+ g
+
+
+
+ t
+
+ o
+
+
+
+ c
+
+ o
+
+ n
+
+ t
+
+ r
+
+ o
+
+ l
+
+
+
+ i
+
+ f
+
+
+
+ t
+
+ h
+
+ e
+
+
+
+ l
+
+ o
+
+ o
+
+ k
+
+ u
+
+ p
+
+
+
+ w
+
+ i
+
+ l
+
+ l
+
+
+
+ o
+
+ b
+
+ s
+
+ e
+
+ r
+
+ v
+
+ e
+
+
+
+ H
+
+ T
+
+ T
+
+ P
+
+
+
+ p
+
+ r
+
+ o
+
+ x
+
+ y
+
+
+
+ e
+
+ n
+
+ v
+
+ i
+
+ r
+
+ o
+
+ n
+
+ m
+
+ e
+
+ n
+
+ t
+
+
+
+ v
+
+ a
+
+ r
+
+ i
+
+ a
+
+ b
+
+ l
+
+ e
+
+ s
+
+
+
+ w
+
+ h
+
+ e
+
+ n
+
+
+
+ p
+
+ r
+
+ e
+
+ s
+
+ e
+
+ n
+
+ t
+
+ .
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - Use ``groups/cpm`` in ``module_defaults`` to set common options used between CPM modules.)
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ - name: Get the Parameters for a WTI device
+ cpm_config_restore:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ cpm_path: "/tmp/"
+ cpm_filename: "wti-192-10-10-239-2020-02-13T16-05-57-xml"
+ use_https: true
+ validate_certs: false
+
+
+
+Return Values
+-------------
+
+ data (always, complex, )
+ The output XML configuration of the WTI device queried
+
+ filelength (success, int, [{'filelength': 329439}])
+ Length of the file uploaded in bytes
+
+ status (success, list, [{'code': 0, 'text': 'ok', 'unittimestamp': '2020-02-14T00:18:57+00:00'}])
+ List of status returns from backup operation
+
+
+
+
+
+Status
+------
+
+
+
+
+- This is not guaranteed to have a backwards compatible interface. *[preview]*
+
+
+- This is maintained by community.
+
+
+
+Authors
+~~~~~~~
+
+- W
+- e
+- s
+- t
+- e
+- r
+- n
+-
+- T
+- e
+- l
+- e
+- m
+- a
+- t
+- i
+- c
+-
+- I
+- n
+- c
+- .
+-
+- (
+- @
+- w
+- t
+- i
+- n
+- e
+- t
+- w
+- o
+- r
+- k
+- g
+- e
+- a
+- r
+- )
+
diff --git a/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_current_info.rst b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_current_info.rst
new file mode 100644
index 00000000..b22e3e73
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_current_info.rst
@@ -0,0 +1,152 @@
+
+cpm_current_info -- Get the Current Information of a WTI device
+===============================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Get the Current Information of a WTI device
+
+
+
+
+
+
+Parameters
+----------
+
+ cpm_url (True, str, None)
+ This is the URL of the WTI device to send the module.
+
+
+ cpm_username (True, str, None)
+ This is the Username of the WTI device to send the module.
+
+
+ cpm_password (True, str, None)
+ This is the Password of the WTI device to send the module.
+
+
+ cpm_startdate (False, str, None)
+ Start date of the range to look for current data
+
+
+ cpm_enddate (False, str, None)
+ End date of the range to look for current data
+
+
+ use_https (False, bool, True)
+ Designates to use an https connection or http connection.
+
+
+ validate_certs (False, bool, True)
+ If false, SSL certificates will not be validated. This should only be used
+
+ on personally controlled sites using self-signed certificates.
+
+
+ use_proxy (False, bool, False)
+ Flag to control if the lookup will observe HTTP proxy environment variables when present.
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - Use ``groups/cpm`` in ``module_defaults`` to set common options used between CPM modules.)
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ - name: Get the Current Information of a WTI device
+ cpm_current_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+
+ - name: Get the Current Information of a WTI device
+ cpm_current_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: false
+ validate_certs: false
+ startdate: 01-12-2020"
+ enddate: 02-16-2020"
+
+
+
+Return Values
+-------------
+
+ data (always, complex, )
+ The output JSON returned from the commands sent
+
+ timestamp (success, str, 2020-02-24T20:54:03+00:00)
+ Current timestamp of the WTI device after module execution.
+
+ powerunit (success, str, 1)
+ Identifies if the WTI device is a power type device.
+
+ outletmetering (success, str, 1)
+ Identifies if the WTI device has Poiwer Outlet metering.
+
+ ats (success, str, 1)
+ Identifies if the WTI device is an ATS type of power device.
+
+ plugcount (success, str, 8)
+ Current outlet plug count of the WTI device after module execution.
+
+ powerfactor (success, str, 100)
+ Power factor of the WTI device after module execution.
+
+ powereff (success, str, 100)
+ Power efficiency of the WTI device after module execution.
+
+ powerdatacount (success, str, 1)
+ Total powerdata samples returned after module execution.
+
+ powerdata (success, dict, [{'timestamp': '2020-02-24T23:29:31+00:00', 'temperature': '90', 'format': 'F', 'branch1': [{'voltage1': '118.00', 'current1': '0.00'}]}])
+ Power data of the WTI device after module execution.
+
+ status (always, dict, {'code': '0', 'text': 'OK'})
+ Return status after module completion
+
+
+
+
+
+Status
+------
+
+
+
+
+- This is not guaranteed to have a backwards compatible interface. *[preview]*
+
+
+- This is maintained by community.
+
+
+
+Authors
+~~~~~~~
+
+- Western Telematic Inc. (@wtinetworkgear)
+
diff --git a/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_firmware_info.rst b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_firmware_info.rst
new file mode 100644
index 00000000..3e877621
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_firmware_info.rst
@@ -0,0 +1,124 @@
+
+cpm_firmware_info -- Get firmware information from WTI OOB and PDU devices
+==========================================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Get firmware information from WTI OOB and PDU devices
+
+
+
+
+
+
+Parameters
+----------
+
+ cpm_url (True, str, None)
+ This is the URL of the WTI device to send the module.
+
+
+ cpm_username (True, str, None)
+ This is the Username of the WTI device to send the module.
+
+
+ cpm_password (True, str, None)
+ This is the Password of the WTI device to send the module.
+
+
+ use_https (False, bool, True)
+ Designates to use an https connection or http connection.
+
+
+ validate_certs (False, bool, True)
+ If false, SSL certificates will not be validated. This should only be used
+
+ on personally controlled sites using self-signed certificates.
+
+
+ use_proxy (False, bool, False)
+ Flag to control if the lookup will observe HTTP proxy environment variables when present.
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - Use ``groups/cpm`` in ``module_defaults`` to set common options used between CPM modules.)
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ - name: Get the Firmware Information for a WTI device
+ cpm_firmware_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+
+ - name: Get the Firmware Information for a WTI device
+ cpm_firmware_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: false
+ validate_certs: false
+
+
+
+Return Values
+-------------
+
+ data (always, complex, )
+ The output JSON returned from the commands sent
+
+ firmware (success, str, 6.60)
+ Current Firmware version of the WTI device.
+
+ family (success, str, 1)
+ Current family type (Console = 1 or Power = 0) of the WTI device.
+
+ fips (success, str, 2020-02-24T20:54:03+00:00)
+ If WTI device is a no FIPS only device.
+
+ status (always, dict, {'code': '0', 'text': 'OK'})
+ Return status after module completion
+
+
+
+
+
+Status
+------
+
+
+
+
+- This is not guaranteed to have a backwards compatible interface. *[preview]*
+
+
+- This is maintained by community.
+
+
+
+Authors
+~~~~~~~
+
+- Western Telematic Inc. (@wtinetworkgear)
+
diff --git a/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_interface_config.rst b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_interface_config.rst
new file mode 100644
index 00000000..fd0f2ec2
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_interface_config.rst
@@ -0,0 +1,191 @@
+
+cpm_interface_config -- Set network interface parameters in WTI OOB and PDU devices
+===================================================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Set network interface parameters in WTI OOB and PDU devices
+
+
+
+
+
+
+Parameters
+----------
+
+ cpm_url (True, str, None)
+ This is the URL of the WTI device to send the module.
+
+
+ cpm_username (True, str, None)
+ This is the Username of the WTI device to send the module.
+
+
+ cpm_password (True, str, None)
+ This is the Password of the WTI device to send the module.
+
+
+ use_https (False, bool, True)
+ Designates to use an https connection or http connection.
+
+
+ validate_certs (False, bool, True)
+ If false, SSL certificates will not be validated. This should only be used
+
+ on personally controlled sites using self-signed certificates.
+
+
+ use_proxy (False, bool, False)
+ Flag to control if the lookup will observe HTTP proxy environment variables when present.
+
+
+ interface (False, str, None)
+ This is the ethernet port name that is getting configured.
+
+
+ negotiation (False, int, None)
+ This is the speed of the interface port being configured.
+
+ 0=Auto, 1=10/half, 2=10/full, 3=100/half, 4=100/full, 5=1000/half, 6=1000/full
+
+
+ ipv4address (False, str, None)
+ IPv4 format IP address for the defined interface Port.
+
+
+ ipv4netmask (False, str, None)
+ IPv4 format Netmask for the defined interface Port.
+
+
+ ipv4gateway (False, str, None)
+ IPv4 format Gateway address for the defined interface Port.
+
+
+ ipv4dhcpenable (False, int, None)
+ Enable IPv4 DHCP request call to obtain confufuration information.
+
+
+ ipv4dhcphostname (False, str, None)
+ Define IPv4 DHCP Hostname.
+
+
+ ipv4dhcplease (False, int, None)
+ IPv4 DHCP Lease Time.
+
+
+ ipv4dhcpobdns (False, int, None)
+ IPv6 DHCP Obtain DNS addresses auto.
+
+
+ ipv4dhcpupdns (False, int, None)
+ IPv4 DHCP DNS Server Update.
+
+
+ ipv4dhcpdefgateway (False, int, None)
+ Enable or Disable this ports configuration as the default IPv4 route for the device.
+
+
+ ipv6address (False, str, None)
+ IPv6 format IP address for the defined interface Port.
+
+
+ ipv6subnetprefix (False, str, None)
+ IPv6 format Subnet Prefix for the defined interface Port.
+
+
+ ipv6gateway (False, str, None)
+ IPv6 format Gateway address for the defined interface Port.
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - Use ``groups/cpm`` in ``module_defaults`` to set common options used between CPM modules.
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ # Set Network Interface Parameters
+ - name: Set the Interface Parameters for port eth1 of a WTI device
+ cpm_interface_config:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+ interface: "eth1"
+ ipv4address: "192.168.0.14"
+ ipv4netmask: "255.255.255.0"
+ ipv4gateway: "192.168.0.1"
+ negotiation: 0
+
+ # Set Network Interface Parameters
+ - name: Set the Interface Parameters for port eth1 to DHCP of a WTI device
+ cpm_interface_config:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+ interface: "eth1"
+ negotiation: 0
+ ipv4dhcpenable: 1
+ ipv4dhcphostname: ""
+ ipv4dhcplease: -1
+ ipv4dhcpobdns: 0
+ ipv4dhcpupdns: 0
+ ipv4dhcpdefgateway: 0
+
+
+
+Return Values
+-------------
+
+ data (always, complex, )
+ The output JSON returned from the commands sent
+
+ totalports (success, int, 1)
+ Total interface ports requested of the WTI device.
+
+ interface (always, dict, {'name': 'eth1', 'type': '0', 'mac_address': '00-09-9b-02-45-db', 'is_up': '0', 'is_gig': '1', 'speed': '10', 'negotiation': '0', 'ietf-ipv4': {'address': [{'ip': '10.10.10.2', 'netmask': '255.255.255.0', 'gateway': ''}], 'dhcpclient': [{'enable': 0, 'hostname': '', 'lease': -1, 'obdns': 1, 'updns': 1}]}, 'ietf-ipv6': {'address': [{'ip': '', 'netmask': '', 'gateway': ''}]}})
+ Current k/v pairs of interface info for the WTI device after module execution.
+
+
+
+
+
+Status
+------
+
+
+
+
+- This is not guaranteed to have a backwards compatible interface. *[preview]*
+
+
+- This is maintained by community.
+
+
+
+Authors
+~~~~~~~
+
+- Western Telematic Inc. (@wtinetworkgear)
+
diff --git a/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_interface_info.rst b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_interface_info.rst
new file mode 100644
index 00000000..29d20245
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_interface_info.rst
@@ -0,0 +1,125 @@
+
+cpm_interface_info -- Get network interface parameters from WTI OOB and PDU devices
+===================================================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Get network interface parameters from WTI OOB and PDU devices
+
+
+
+
+
+
+Parameters
+----------
+
+ cpm_url (True, str, None)
+ This is the URL of the WTI device to send the module.
+
+
+ cpm_username (True, str, None)
+ This is the Username of the WTI device to send the module.
+
+
+ cpm_password (True, str, None)
+ This is the Password of the WTI device to send the module.
+
+
+ use_https (False, bool, True)
+ Designates to use an https connection or http connection.
+
+
+ validate_certs (False, bool, True)
+ If false, SSL certificates will not be validated. This should only be used
+
+ on personally controlled sites using self-signed certificates.
+
+
+ use_proxy (False, bool, False)
+ Flag to control if the lookup will observe HTTP proxy environment variables when present.
+
+
+ interface (False, list, None)
+ This is the ethernet port name that is getting retrieved. It can include a single ethernet
+
+ port name, multiple ethernet port names separated by commas or not defined for all ports.
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - Use ``groups/cpm`` in ``module_defaults`` to set common options used between CPM modules.)
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ - name: Get the network interface Parameters for a WTI device for all interfaces
+ cpm_interface_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+
+ - name: Get the network interface Parameters for a WTI device for a specific interface
+ cpm_interface_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ interface: "eth0,eth1"
+ use_https: false
+ validate_certs: false
+
+
+
+Return Values
+-------------
+
+ data (always, complex, )
+ The output JSON returned from the commands sent
+
+ totalports (success, int, 1)
+ Total ethernet ports requested of the WTI device.
+
+ interface (always, dict, {'name': 'eth1', 'type': '0', 'mac_address': '00-09-9b-02-45-db', 'is_up': '0', 'is_gig': '1', 'speed': '10', 'negotiation': '0', 'ietf-ipv4': {'address': [{'ip': '10.10.10.2', 'netmask': '255.255.255.0', 'gateway': ''}], 'dhcpclient': [{'enable': 0, 'hostname': '', 'lease': -1, 'obdns': 1, 'updns': 1}]}, 'ietf-ipv6': {'address': [{'ip': '', 'netmask': '', 'gateway': ''}]}})
+ Current k/v pairs of interface info for the WTI device after module execution.
+
+
+
+
+
+Status
+------
+
+
+
+
+- This is not guaranteed to have a backwards compatible interface. *[preview]*
+
+
+- This is maintained by community.
+
+
+
+Authors
+~~~~~~~
+
+- Western Telematic Inc. (@wtinetworkgear)
+
diff --git a/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_iptables_config.rst b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_iptables_config.rst
new file mode 100644
index 00000000..4ee5c4fa
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_iptables_config.rst
@@ -0,0 +1,140 @@
+
+cpm_iptables_config -- Set network IPTables parameters in WTI OOB and PDU devices
+=================================================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Set network IPTables parameters in WTI OOB and PDU devices
+
+
+
+
+
+
+Parameters
+----------
+
+ cpm_url (True, str, None)
+ This is the URL of the WTI device to send the module.
+
+
+ cpm_username (True, str, None)
+ This is the Username of the WTI device to send the module.
+
+
+ cpm_password (True, str, None)
+ This is the Password of the WTI device to send the module.
+
+
+ use_https (False, bool, True)
+ Designates to use an https connection or http connection.
+
+
+ validate_certs (False, bool, True)
+ If false, SSL certificates will not be validated. This should only be used
+
+ on personally controlled sites using self-signed certificates.
+
+
+ use_proxy (False, bool, False)
+ Flag to control if the lookup will observe HTTP proxy environment variables when present.
+
+
+ protocol (False, int, None)
+ The protocol that the iptables entry should be applied. 0 = ipv4, 1 = ipv6.
+
+
+ index (False, list, None)
+ Index in which command should be inserted. If not defined entry will start at position one.
+
+
+ command (True, list, None)
+ Actual iptables command to send to the WTI device.
+
+
+ clear (False, int, None)
+ Removes all the iptables for the protocol being defined before setting the newly defined entry.
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - Use ``groups/cpm`` in ``module_defaults`` to set common options used between CPM modules.
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ # Set Network IPTables Parameters
+ - name: Set the an IPTables Parameter for a WTI device
+ cpm_iptables_config:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+ command: "iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT"
+
+ # Sets multiple Network IPTables Parameters
+ - name: Set the IPTables Parameters a WTI device
+ cpm_iptables_config:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+ index:
+ - 1
+ - 2
+ command:
+ - "iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT"
+ - "iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT"
+
+
+
+Return Values
+-------------
+
+ data (always, complex, )
+ The output JSON returned from the commands sent
+
+ iptables (always, dict, [{'eth0': {'ietf-ipv4': {'clear': 1, 'entries': [{'entry': 'iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT', 'index': '1'}, {'entry': 'iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT', 'index': '2'}]}}}])
+ Current k/v pairs of interface info for the WTI device after module execution.
+
+
+
+
+
+Status
+------
+
+
+
+
+- This is not guaranteed to have a backwards compatible interface. *[preview]*
+
+
+- This is maintained by community.
+
+
+
+Authors
+~~~~~~~
+
+- Western Telematic Inc. (@wtinetworkgear)
+
diff --git a/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_iptables_info.rst b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_iptables_info.rst
new file mode 100644
index 00000000..6d2d0f54
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_iptables_info.rst
@@ -0,0 +1,115 @@
+
+cpm_iptables_info -- Get network IPTABLES parameters from WTI OOB and PDU devices
+=================================================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Get network IPTABLES parameters from WTI OOB and PDU devices
+
+
+
+
+
+
+Parameters
+----------
+
+ cpm_url (True, str, None)
+ This is the URL of the WTI device to send the module.
+
+
+ cpm_username (True, str, None)
+ This is the Username of the WTI device to send the module.
+
+
+ cpm_password (True, str, None)
+ This is the Password of the WTI device to send the module.
+
+
+ use_https (False, bool, True)
+ Designates to use an https connection or http connection.
+
+
+ validate_certs (False, bool, True)
+ If false, SSL certificates will not be validated. This should only be used
+
+ on personally controlled sites using self-signed certificates.
+
+
+ use_proxy (False, bool, False)
+ Flag to control if the lookup will observe HTTP proxy environment variables when present.
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - Use ``groups/cpm`` in ``module_defaults`` to set common options used between CPM modules.)
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ - name: Get the network IPTABLES Parameters for a WTI device.
+ cpm_interface_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+
+ - name: Get the network IPTABLES Parameters for a WTI device.
+ cpm_interface_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: false
+ validate_certs: false
+
+
+
+Return Values
+-------------
+
+ data (always, complex, )
+ The output JSON returned from the commands sent
+
+ iptables (always, dict, {'iptables': [{'eth0': {'ietf-ipv4': [{'clear': 0, 'entries': [{'entry': 'test10', 'index': '1'}, {'entry': '', 'index': '2'}]}], 'ietf-ipv6': [{'clear': 0, 'entries': [{'entry': 'test30', 'index': '1'}, {'entry': 'test40', 'index': '2'}]}]}}]})
+ Current k/v pairs of IPTABLES info for the WTI device after module execution.
+
+
+
+
+
+Status
+------
+
+
+
+
+- This is not guaranteed to have a backwards compatible interface. *[preview]*
+
+
+- This is maintained by community.
+
+
+
+Authors
+~~~~~~~
+
+- Western Telematic Inc. (@wtinetworkgear)
+
diff --git a/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_plugconfig.rst b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_plugconfig.rst
new file mode 100644
index 00000000..e5ac226e
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_plugconfig.rst
@@ -0,0 +1,373 @@
+
+cpm_plugconfig -- Get and Set Plug Parameters on WTI OOB and PDU power devices
+==============================================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Get and Set Plug Parameters on WTI OOB and PDU devices
+
+
+
+
+
+
+Parameters
+----------
+
+ cpm_action (True, str, None)
+ This is the Action to send the module.
+
+
+ cpm_url (True, str, None)
+ This is the URL of the WTI device to send the module.
+
+
+ cpm_username (True, str, None)
+ This is the Username of the WTI device to send the module.
+
+
+ cpm_password (True, str, None)
+ This is the Password of the WTI device to send the module.
+
+
+ use_https (False, bool, True)
+ Designates to use an https connection or http connection.
+
+
+ validate_certs (False, bool, True)
+ If false, SSL certificates will not be validated. This should only be used
+
+ on personally controlled sites using self-signed certificates.
+
+
+ use_proxy (False, bool, False)
+ F
+
+ l
+
+ a
+
+ g
+
+
+
+ t
+
+ o
+
+
+
+ c
+
+ o
+
+ n
+
+ t
+
+ r
+
+ o
+
+ l
+
+
+
+ i
+
+ f
+
+
+
+ t
+
+ h
+
+ e
+
+
+
+ l
+
+ o
+
+ o
+
+ k
+
+ u
+
+ p
+
+
+
+ w
+
+ i
+
+ l
+
+ l
+
+
+
+ o
+
+ b
+
+ s
+
+ e
+
+ r
+
+ v
+
+ e
+
+
+
+ H
+
+ T
+
+ T
+
+ P
+
+
+
+ p
+
+ r
+
+ o
+
+ x
+
+ y
+
+
+
+ e
+
+ n
+
+ v
+
+ i
+
+ r
+
+ o
+
+ n
+
+ m
+
+ e
+
+ n
+
+ t
+
+
+
+ v
+
+ a
+
+ r
+
+ i
+
+ a
+
+ b
+
+ l
+
+ e
+
+ s
+
+
+
+ w
+
+ h
+
+ e
+
+ n
+
+
+
+ p
+
+ r
+
+ e
+
+ s
+
+ e
+
+ n
+
+ t
+
+ .
+
+
+ plug_id (True, str, None)
+ This is the plug number that is to be manipulated
+
+ For the getplugconfig command, the plug_id 'all' will return the status of all the plugs the
+
+ user has rights to access.
+
+
+ plug_name (False, str, None)
+ The new name of the Plug.
+
+
+ plug_bootdelay (False, int, None)
+ On a reboot command, this is the time when a plug will turn on power, after it has been turned off.
+
+ 0='0.5 Secs', 1='1 Sec', 2='2 Sec', 3='5 Sec', 4='15 Sec', 5='30 Sec', 6='1 Min', 7='2 Mins', - 8='3 Mins', 9='5 Mins'.
+
+
+ plug_default (False, int, None)
+ What the Plugs default state is when the device starts. 0 - Off, 1 - On.
+
+
+ plug_bootpriority (False, int, None)
+ Prioritizes which plug gets its state changed first. The lower the number the higher the priority.
+
+ Valid value can from 1 to the maximum number of plugs of the WTI unit.
+
+
+
+
+
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ # Get Plug parameters for all ports
+ - name: Get the Plug parameters for ALL ports of a WTI Power device
+ cpm_plugconfig:
+ cpm_action: "getplugconfig"
+ cpm_url: "rest.wti.com"
+ cpm_username: "restpower"
+ cpm_password: "restfulpowerpass12"
+ use_https: true
+ validate_certs: true
+ plug_id: "all"
+
+ # Get Plug parameters for port 2
+ - name: Get the Plug parameters for the given port of a WTI Power device
+ cpm_plugconfig:
+ cpm_action: "getplugconfig"
+ cpm_url: "rest.wti.com"
+ cpm_username: "restpower"
+ cpm_password: "restfulpowerpass12"
+ use_https: true
+ validate_certs: false
+ plug_id: "2"
+
+ # Configure plug 5
+ - name: Configure parameters for Plug 5 on a given WTI Power device
+ cpm_plugconfig:
+ cpm_action: "setplugconfig"
+ cpm_url: "rest.wti.com"
+ cpm_username: "restpower"
+ cpm_password: "restfulpowerpass12"
+ use_https: true
+ plug_id: "5"
+ plug_name: "NewPlugNameFive"
+ plug_bootdelay: "3"
+ plug_default: "0"
+ plug_bootpriority: "1"
+
+
+
+Return Values
+-------------
+
+ data (always, str, )
+ The output JSON returned from the commands sent
+
+
+
+
+Status
+------
+
+
+
+
+- This is not guaranteed to have a backwards compatible interface. *[preview]*
+
+
+- This is maintained by community.
+
+
+
+Authors
+~~~~~~~
+
+- W
+- e
+- s
+- t
+- e
+- r
+- n
+-
+- T
+- e
+- l
+- e
+- m
+- a
+- t
+- i
+- c
+-
+- I
+- n
+- c
+- .
+-
+- (
+- @
+- w
+- t
+- i
+- n
+- e
+- t
+- w
+- o
+- r
+- k
+- g
+- e
+- a
+- r
+- )
+
diff --git a/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_plugcontrol.rst b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_plugcontrol.rst
new file mode 100644
index 00000000..45efa58f
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_plugcontrol.rst
@@ -0,0 +1,354 @@
+
+cpm_plugcontrol -- Get and Set Plug actions on WTI OOB and PDU power devices
+============================================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Get and Set Plug actions on WTI OOB and PDU devices
+
+
+
+
+
+
+Parameters
+----------
+
+ cpm_action (True, str, None)
+ This is the Action to send the module.
+
+
+ cpm_url (True, str, None)
+ This is the URL of the WTI device to send the module.
+
+
+ cpm_username (True, str, None)
+ This is the Username of the WTI device to send the module.
+
+
+ cpm_password (True, str, None)
+ This is the Password of the WTI device to send the module.
+
+
+ use_https (False, bool, True)
+ Designates to use an https connection or http connection.
+
+
+ validate_certs (False, bool, True)
+ If false, SSL certificates will not be validated. This should only be used
+
+ on personally controlled sites using self-signed certificates.
+
+
+ use_proxy (False, bool, False)
+ F
+
+ l
+
+ a
+
+ g
+
+
+
+ t
+
+ o
+
+
+
+ c
+
+ o
+
+ n
+
+ t
+
+ r
+
+ o
+
+ l
+
+
+
+ i
+
+ f
+
+
+
+ t
+
+ h
+
+ e
+
+
+
+ l
+
+ o
+
+ o
+
+ k
+
+ u
+
+ p
+
+
+
+ w
+
+ i
+
+ l
+
+ l
+
+
+
+ o
+
+ b
+
+ s
+
+ e
+
+ r
+
+ v
+
+ e
+
+
+
+ H
+
+ T
+
+ T
+
+ P
+
+
+
+ p
+
+ r
+
+ o
+
+ x
+
+ y
+
+
+
+ e
+
+ n
+
+ v
+
+ i
+
+ r
+
+ o
+
+ n
+
+ m
+
+ e
+
+ n
+
+ t
+
+
+
+ v
+
+ a
+
+ r
+
+ i
+
+ a
+
+ b
+
+ l
+
+ e
+
+ s
+
+
+
+ w
+
+ h
+
+ e
+
+ n
+
+
+
+ p
+
+ r
+
+ e
+
+ s
+
+ e
+
+ n
+
+ t
+
+ .
+
+
+ plug_id (True, str, None)
+ This is the plug number or the plug name that is to be manipulated
+
+ For the plugget command, the plug_id 'all' will return the status of all the plugs the
+
+ user has rights to access.
+
+
+ plug_state (False, str, None)
+ This is what action to take on the plug.
+
+
+
+
+
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ # Get Plug status for all ports
+ - name: Get the Plug status for ALL ports of a WTI device
+ cpm_plugcontrol:
+ cpm_action: "getplugcontrol"
+ cpm_url: "rest.wti.com"
+ cpm_username: "restpower"
+ cpm_password: "restfulpowerpass12"
+ use_https: true
+ validate_certs: true
+ plug_id: "all"
+
+ # Get Plug status for port 2
+ - name: Get the Plug status for the given port of a WTI device
+ cpm_plugcontrol:
+ cpm_action: "getplugcontrol"
+ cpm_url: "rest.wti.com"
+ cpm_username: "restpower"
+ cpm_password: "restfulpowerpass12"
+ use_https: true
+ validate_certs: false
+ plug_id: "2"
+
+ # Reboot plug 5
+ - name: Reboot Plug 5 on a given WTI device
+ cpm_plugcontrol:
+ cpm_action: "setplugcontrol"
+ cpm_url: "rest.wti.com"
+ cpm_username: "restpower"
+ cpm_password: "restfulpowerpass12"
+ use_https: true
+ plug_id: "5"
+ plug_state: "boot"
+
+
+
+Return Values
+-------------
+
+ data (always, str, )
+ The output JSON returned from the commands sent
+
+
+
+
+Status
+------
+
+
+
+
+- This is not guaranteed to have a backwards compatible interface. *[preview]*
+
+
+- This is maintained by community.
+
+
+
+Authors
+~~~~~~~
+
+- W
+- e
+- s
+- t
+- e
+- r
+- n
+-
+- T
+- e
+- l
+- e
+- m
+- a
+- t
+- i
+- c
+-
+- I
+- n
+- c
+- .
+-
+- (
+- @
+- w
+- t
+- i
+- n
+- e
+- t
+- w
+- o
+- r
+- k
+- g
+- e
+- a
+- r
+- )
+
diff --git a/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_power_info.rst b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_power_info.rst
new file mode 100644
index 00000000..45adc1d3
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_power_info.rst
@@ -0,0 +1,152 @@
+
+cpm_power_info -- Get the Power Information of a WTI device
+===========================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Get the Power Information of a WTI device
+
+
+
+
+
+
+Parameters
+----------
+
+ cpm_url (True, str, None)
+ This is the URL of the WTI device to send the module.
+
+
+ cpm_username (True, str, None)
+ This is the Username of the WTI device to send the module.
+
+
+ cpm_password (True, str, None)
+ This is the Password of the WTI device to send the module.
+
+
+ cpm_startdate (False, str, None)
+ Start date of the range to look for power data
+
+
+ cpm_enddate (False, str, None)
+ End date of the range to look for power data
+
+
+ use_https (False, bool, True)
+ Designates to use an https connection or http connection.
+
+
+ validate_certs (False, bool, True)
+ If false, SSL certificates will not be validated. This should only be used
+
+ on personally controlled sites using self-signed certificates.
+
+
+ use_proxy (False, bool, False)
+ Flag to control if the lookup will observe HTTP proxy environment variables when present.
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - Use ``groups/cpm`` in ``module_defaults`` to set common options used between CPM modules.)
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ - name: Get the Power Information of a WTI device
+ cpm_power_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+
+ - name: Get the Power Information of a WTI device
+ cpm_power_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: false
+ validate_certs: false
+ startdate: 01-12-2020"
+ enddate: 02-16-2020"
+
+
+
+Return Values
+-------------
+
+ data (always, complex, )
+ The output JSON returned from the commands sent
+
+ timestamp (success, str, 2020-02-24T20:54:03+00:00)
+ Current timestamp of the WTI device after module execution.
+
+ powerunit (success, str, 1)
+ Identifies if the WTI device is a power type device.
+
+ outletmetering (success, str, 1)
+ Identifies if the WTI device has Poiwer Outlet metering.
+
+ ats (success, str, 1)
+ Identifies if the WTI device is an ATS type of power device.
+
+ plugcount (success, str, 8)
+ Current outlet plug count of the WTI device after module execution.
+
+ powerfactor (success, str, 100)
+ Power factor of the WTI device after module execution.
+
+ powereff (success, str, 100)
+ Power efficiency of the WTI device after module execution.
+
+ powerdatacount (success, str, 1)
+ Total powerdata samples returned after module execution.
+
+ powerdata (success, dict, [{'timestamp': '2020-02-24T21:45:18+00:00', 'branch1': [{'voltage1': '118.00', 'current1': '0.00', 'current2': '0.00', 'current3': '0.00', 'current4': '0.00', 'current5': '0.00', 'current6': '0.00', 'current7': '0.00', 'current8': '0.00'}]}])
+ Power data of the WTI device after module execution.
+
+ status (always, dict, {'code': '0', 'text': 'OK'})
+ Return status after module completion
+
+
+
+
+
+Status
+------
+
+
+
+
+- This is not guaranteed to have a backwards compatible interface. *[preview]*
+
+
+- This is maintained by community.
+
+
+
+Authors
+~~~~~~~
+
+- Western Telematic Inc. (@wtinetworkgear)
+
diff --git a/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_serial_port_config.rst b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_serial_port_config.rst
new file mode 100644
index 00000000..39f8f148
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_serial_port_config.rst
@@ -0,0 +1,538 @@
+
+cpm_serial_port_config -- Set Serial port parameters in WTI OOB and PDU devices
+===============================================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Set Serial port parameters in WTI OOB and PDU devices
+
+
+
+
+
+
+Parameters
+----------
+
+ cpm_url (True, str, None)
+ This is the URL of the WTI device to send the module.
+
+
+ cpm_username (True, str, None)
+ This is the Username of the WTI device to send the module.
+
+
+ cpm_password (True, str, None)
+ This is the Password of the WTI device to send the module.
+
+
+ use_https (False, bool, True)
+ Designates to use an https connection or http connection.
+
+
+ validate_certs (False, bool, True)
+ If false, SSL certificates will not be validated. This should only be used
+
+ on personally controlled sites using self-signed certificates.
+
+
+ use_proxy (False, bool, False)
+ F
+
+ l
+
+ a
+
+ g
+
+
+
+ t
+
+ o
+
+
+
+ c
+
+ o
+
+ n
+
+ t
+
+ r
+
+ o
+
+ l
+
+
+
+ i
+
+ f
+
+
+
+ t
+
+ h
+
+ e
+
+
+
+ l
+
+ o
+
+ o
+
+ k
+
+ u
+
+ p
+
+
+
+ w
+
+ i
+
+ l
+
+ l
+
+
+
+ o
+
+ b
+
+ s
+
+ e
+
+ r
+
+ v
+
+ e
+
+
+
+ H
+
+ T
+
+ T
+
+ P
+
+
+
+ p
+
+ r
+
+ o
+
+ x
+
+ y
+
+
+
+ e
+
+ n
+
+ v
+
+ i
+
+ r
+
+ o
+
+ n
+
+ m
+
+ e
+
+ n
+
+ t
+
+
+
+ v
+
+ a
+
+ r
+
+ i
+
+ a
+
+ b
+
+ l
+
+ e
+
+ s
+
+
+
+ w
+
+ h
+
+ e
+
+ n
+
+
+
+ p
+
+ r
+
+ e
+
+ s
+
+ e
+
+ n
+
+ t
+
+ .
+
+
+ port (True, int, None)
+ This is the port number that is getting the action performed on.
+
+
+ portname (False, str, None)
+ This is the Name of the Port that is displayed.
+
+
+ baud (False, int, None)
+ This is the baud rate to assign to the port.
+
+ 0=300, 1=1200, 2=2400, 3=4800, 4=9600, 5=19200, 6=38400, 7=57600, 8=115200, 9=230400, 10=460800
+
+
+ handshake (False, int, None)
+ This is the handshake to assign to the port, 0=None, 1=XON/XOFF, 2=RTS/CTS, 3=Both.
+
+
+ stopbits (False, int, None)
+ This is the stop bits to assign to the port, 0=1 Stop Bit, 1=2 Stop Bit.
+
+
+ parity (False, int, None)
+ This is the parity to assign to the port, 0=7-None, 1=7-Even, 2=7-Odd, 3=8-None, 4=8-Even, 5=8-Odd.
+
+
+ mode (False, int, None)
+ This is the port mode to assign to the port, 0=Any-to-Any. 1=Passive, 2=Buffer, 3=Modem, 4=ModemPPP.
+
+
+ cmd (False, int, None)
+ This is the Admin Mode to assign to the port, 0=Deny, 1=Permit.
+
+
+ seq (False, int, None)
+ This is the type of Sequence Disconnect to assign to the port, 0=Three Characters (before and after), 1=One Character Only, 2=Off
+
+
+ tout (False, int, None)
+ This is the Port Activity Timeout to assign to the port, 0=Off, 1=5 Min, 2=15 Min, 3=30 Min, 4=90 Min, 5=1 Min.
+
+
+ echo (False, bool, None)
+ -
+
+ T
+
+ h
+
+ i
+
+ s
+
+
+
+ i
+
+ s
+
+
+
+ t
+
+ h
+
+ e
+
+
+
+ c
+
+ o
+
+ m
+
+ m
+
+ a
+
+ n
+
+ d
+
+
+
+ e
+
+ c
+
+ h
+
+ o
+
+
+
+ p
+
+ a
+
+ r
+
+ a
+
+ m
+
+ e
+
+ t
+
+ e
+
+ r
+
+
+
+ t
+
+ o
+
+
+
+ a
+
+ s
+
+ s
+
+ i
+
+ g
+
+ n
+
+
+
+ t
+
+ o
+
+
+
+ t
+
+ h
+
+ e
+
+
+
+ p
+
+ o
+
+ r
+
+ t
+
+ ,
+
+
+
+ 0
+
+ =
+
+ O
+
+ f
+
+ f
+
+ ,
+
+
+
+ 1
+
+ =
+
+ O
+
+ n
+
+
+ break_allow (False, bool, None)
+ This is if the break character is allowed to be passed through the port, 0=Off, 1=On
+
+
+ logoff (False, str, None)
+ This is the logout character to assign to the port
+
+ If preceded by a ^ character, the sequence will be a control character. Used if seq is set to 0 or 1
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - Use ``groups/cpm`` in ``module_defaults`` to set common options used between CPM modules.
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ # Set Serial Port Parameters
+ - name: Set the Port Parameters for port 2 of a WTI device
+ cpm_serial_port_config:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+ port: "2"
+ portname: "RouterLabel"
+ baud: "7"
+ handshake: "1"
+ stopbits: "0"
+ parity: "0"
+ mode: "0"
+ cmd: "0"
+ seq: "1"
+ tout: "1"
+ echo: "0"
+ break_allow: "0"
+ logoff: "^H"
+
+ # Set Serial Port Port Name and Baud Rate Parameters
+ - name: Set New port name and baud rate (115k) for port 4 of a WTI device
+ cpm_serial_port_config:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+ port: "4"
+ portname: "NewPortName1"
+ baud: "8"
+
+
+
+Return Values
+-------------
+
+ data (always, str, )
+ The output JSON returned from the commands sent
+
+
+
+
+Status
+------
+
+
+
+
+- This is not guaranteed to have a backwards compatible interface. *[preview]*
+
+
+- This is maintained by community.
+
+
+
+Authors
+~~~~~~~
+
+- W
+- e
+- s
+- t
+- e
+- r
+- n
+-
+- T
+- e
+- l
+- e
+- m
+- a
+- t
+- i
+- c
+-
+- I
+- n
+- c
+- .
+-
+- (
+- @
+- w
+- t
+- i
+- n
+- e
+- t
+- w
+- o
+- r
+- k
+- g
+- e
+- a
+- r
+- )
+
diff --git a/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_serial_port_info.rst b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_serial_port_info.rst
new file mode 100644
index 00000000..f40b11cd
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_serial_port_info.rst
@@ -0,0 +1,347 @@
+
+cpm_serial_port_info -- Get Serial port parameters in WTI OOB and PDU devices
+=============================================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Get Serial port parameters from WTI OOB and PDU devices
+
+
+
+
+
+
+Parameters
+----------
+
+ cpm_url (True, str, None)
+ This is the URL of the WTI device to send the module.
+
+
+ cpm_username (True, str, None)
+ This is the Username of the WTI device to send the module.
+
+
+ cpm_password (True, str, None)
+ This is the Password of the WTI device to send the module.
+
+
+ use_https (False, bool, False)
+ Designates to use an https connection or http connection.
+
+
+ validate_certs (False, bool, False)
+ If false, SSL certificates will not be validated. This should only be used
+
+ on personally controlled sites using self-signed certificates.
+
+
+ use_proxy (False, bool, False)
+ F
+
+ l
+
+ a
+
+ g
+
+
+
+ t
+
+ o
+
+
+
+ c
+
+ o
+
+ n
+
+ t
+
+ r
+
+ o
+
+ l
+
+
+
+ i
+
+ f
+
+
+
+ t
+
+ h
+
+ e
+
+
+
+ l
+
+ o
+
+ o
+
+ k
+
+ u
+
+ p
+
+
+
+ w
+
+ i
+
+ l
+
+ l
+
+
+
+ o
+
+ b
+
+ s
+
+ e
+
+ r
+
+ v
+
+ e
+
+
+
+ H
+
+ T
+
+ T
+
+ P
+
+
+
+ p
+
+ r
+
+ o
+
+ x
+
+ y
+
+
+
+ e
+
+ n
+
+ v
+
+ i
+
+ r
+
+ o
+
+ n
+
+ m
+
+ e
+
+ n
+
+ t
+
+
+
+ v
+
+ a
+
+ r
+
+ i
+
+ a
+
+ b
+
+ l
+
+ e
+
+ s
+
+
+
+ w
+
+ h
+
+ e
+
+ n
+
+
+
+ p
+
+ r
+
+ e
+
+ s
+
+ e
+
+ n
+
+ t
+
+ .
+
+
+ port (True, list, ['*'])
+ This is the serial port number that is getting retrieved. It can include a single port
+
+ number, multiple port numbers separated by commas, a list of port numbers, or an '*' character for all ports.
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - Use ``groups/cpm`` in ``module_defaults`` to set common options used between CPM modules.)
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ - name: Get the Serial Port Parameters for port 2 of a WTI device
+ cpm_serial_port_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+ port: 2
+
+ - name: Get the Serial Port Parameters for ports 2 and 4 of a WTI device
+ cpm_serial_port_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+ port: 2,4
+
+ - name: Get the Serial Port Parameters for all ports of a WTI device
+ cpm_serial_port_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+ port: "*"
+
+
+
+Return Values
+-------------
+
+ data (always, complex, )
+ The output JSON returned from the commands sent
+
+ serialports (success, list, [{'baud': 4, 'break': 1, 'cmd': 1, 'connstatus': 'Free', 'echo': 1, 'handshake': 2, 'logoff': '^X', 'mode': 1, 'parity': 3, 'port': 2, 'portname': 'switch', 'seq': 2, 'stopbits': 1, 'tout': 0}, {'baud': 3, 'break': 1, 'cmd': 1, 'connstatus': 'Free', 'echo': 1, 'handshake': 2, 'logoff': '^X', 'mode': 1, 'parity': 1, 'port': 4, 'portname': 'router', 'seq': 2, 'stopbits': 1, 'tout': 1}])
+ List of data for each serial port
+
+
+
+
+
+Status
+------
+
+
+
+
+- This is not guaranteed to have a backwards compatible interface. *[preview]*
+
+
+- This is maintained by community.
+
+
+
+Authors
+~~~~~~~
+
+- W
+- e
+- s
+- t
+- e
+- r
+- n
+-
+- T
+- e
+- l
+- e
+- m
+- a
+- t
+- i
+- c
+-
+- I
+- n
+- c
+- .
+-
+- (
+- @
+- w
+- t
+- i
+- n
+- e
+- t
+- w
+- o
+- r
+- k
+- g
+- e
+- a
+- r
+- )
+
diff --git a/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_snmp_config.rst b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_snmp_config.rst
new file mode 100644
index 00000000..ef6bccc6
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_snmp_config.rst
@@ -0,0 +1,219 @@
+
+cpm_snmp_config -- Set network IPTables parameters in WTI OOB and PDU devices
+=============================================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Set network IPTables parameters in WTI OOB and PDU devices
+
+
+
+
+
+
+Parameters
+----------
+
+ cpm_url (True, str, None)
+ This is the URL of the WTI device to send the module.
+
+
+ cpm_username (True, str, None)
+ This is the Username of the WTI device to send the module.
+
+
+ cpm_password (True, str, None)
+ This is the Password of the WTI device to send the module.
+
+
+ use_https (False, bool, True)
+ Designates to use an https connection or http connection.
+
+
+ validate_certs (False, bool, True)
+ If false, SSL certificates will not be validated. This should only be used
+
+ on personally controlled sites using self-signed certificates.
+
+
+ use_proxy (False, bool, False)
+ Flag to control if the lookup will observe HTTP proxy environment variables when present.
+
+
+ protocol (False, int, None)
+ The protocol that the SNMP entry should be applied. 0 = ipv4, 1 = ipv6.
+
+
+ enable (False, int, None)
+ The activates SNMP polling for the specified interface and protocol.
+
+
+ interface (False, str, None)
+ The ethernet port for the SNMP we are defining.
+
+
+ readonly (False, int, None)
+ Controls the ability to change configuration parameters with SNMP.
+
+
+ version (False, int, None)
+ Defined which version of SNMP the device will respond to 0 = V1/V2 Only, 1 = V3 Only, 2 = V1/V2/V3.
+
+
+ contact (False, str, None)
+ The name of the administrator responsible for SNMP issues.
+
+
+ location (False, str, None)
+ The location of the SNMP Server.
+
+
+ systemname (False, str, None)
+ The hostname of the WTI Device.
+
+
+ rocommunity (False, str, None)
+ Read Only Community Password, not used for SNMP V3.
+
+
+ rwcommunity (False, str, None)
+ Read/Write Community Password, not used for SNMP V3.
+
+
+ clear (False, int, None)
+ Removes all the users for the protocol being defined before setting the newly defined entries.
+
+
+ index (False, list, None)
+ Index of the user being modified (V3 only).
+
+
+ username (False, list, None)
+ Sets the User Name for SNMPv3 access (V3 only).
+
+
+ authpriv (False, list, None)
+ Configures the Authentication and Privacy features for SNMPv3 communication, 0 = Auth/NoPriv, 1 = Auth/Priv (V3 only).
+
+
+ authpass (False, list, None)
+ Sets the Authentication Password for SNMPv3 (V3 only).
+
+
+ authproto (False, list, None)
+ Which authentication protocol will be used, 0 = MD5, 1 = SHA1 (V3 only).
+
+
+ privpass (False, list, None)
+ Sets the Privacy Password for SNMPv3 (V3 only) (V3 only).
+
+
+ privproto (False, list, None)
+ Which privacy protocol will be used, 0 = DES, 1 = AES128 (V3 only).
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - Use ``groups/cpm`` in ``module_defaults`` to set common options used between CPM modules.
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ # Sets the device SNMP Parameters
+ - name: Set the an SNMP Parameter for a WTI device
+ cpm_iptables_config:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ interface: "eth0"
+ use_https: true
+ validate_certs: false
+ protocol: 0
+ clear: 1
+ enable: 1
+ readonly: 0
+ version: 0
+ rocommunity: "ropassword"
+ rwcommunity: "rwpassword"
+
+ # Sets the device SNMP Parameters
+ - name: Set the SNMP Parameters a WTI device
+ cpm_iptables_config:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+ version: 1
+ index:
+ - 1
+ - 2
+ username:
+ - "username1"
+ - "username2"
+ authpriv:
+ - 1
+ - 1
+ authpass:
+ - "authpass1"
+ - "uthpass2"
+ authproto:
+ - 1
+ - 1
+ privpass:
+ - "authpass1"
+ - "uthpass2"
+ privproto:
+ - 1
+ - 1
+
+
+
+Return Values
+-------------
+
+ data (always, complex, )
+ The output JSON returned from the commands sent
+
+ snmpaccess (always, dict, [{'eth0': {'ietf-ipv4': {'clear': 1, 'enable': 0, 'readonly': 0, 'version': 0, 'users': [{'username': 'username1', 'authpass': 'testpass', 'authpriv': '1', 'authproto': '0', 'privpass': 'privpass1', 'privproto': '0', 'index': '1'}]}}}])
+ Current k/v pairs of interface info for the WTI device after module execution.
+
+
+
+
+
+Status
+------
+
+
+
+
+- This is not guaranteed to have a backwards compatible interface. *[preview]*
+
+
+- This is maintained by community.
+
+
+
+Authors
+~~~~~~~
+
+- Western Telematic Inc. (@wtinetworkgear)
+
diff --git a/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_snmp_info.rst b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_snmp_info.rst
new file mode 100644
index 00000000..7a2dc99f
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_snmp_info.rst
@@ -0,0 +1,123 @@
+
+cpm_snmp_info -- Get network SNMP parameters from WTI OOB and PDU devices
+=========================================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Get network SNMP parameters from WTI OOB and PDU devices
+
+
+
+
+
+
+Parameters
+----------
+
+ cpm_url (True, str, None)
+ This is the URL of the WTI device to send the module.
+
+
+ cpm_username (True, str, None)
+ This is the Username of the WTI device to send the module.
+
+
+ cpm_password (True, str, None)
+ This is the Password of the WTI device to send the module.
+
+
+ interface (False, str, None)
+ This is the ethernet port name that is getting retrieved. It can include a single ethernet
+
+ port name, multiple ethernet port names separated by commas or not defined for all ports.
+
+
+ use_https (False, bool, True)
+ Designates to use an https connection or http connection.
+
+
+ validate_certs (False, bool, True)
+ If false, SSL certificates will not be validated. This should only be used
+
+ on personally controlled sites using self-signed certificates.
+
+
+ use_proxy (False, bool, False)
+ Flag to control if the lookup will observe HTTP proxy environment variables when present.
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - Use ``groups/cpm`` in ``module_defaults`` to set common options used between CPM modules.)
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ - name: Get the network SNMP Parameters for all interfaces of a WTI device.
+ cpm_interface_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+
+
+ - name: Get the network SNMP Parameters for eth0 of a WTI device.
+ cpm_interface_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: false
+ validate_certs: false
+ interface: "eth0"
+
+
+
+Return Values
+-------------
+
+ data (always, complex, )
+ The output JSON returned from the commands sent
+
+ snmpaccess (always, dict, {'snmpaccess': [{'eth0': {'ietf-ipv4': [{'enable': 0, 'users': [{'index': '1', 'username': 'test10', 'authpriv': '1', 'authpass': 'testpass', 'authproto': '0', 'privpass': 'testpass', 'privproto': '1'}]}], 'ietf-ipv6': [{'enable': 0, 'users': [{'index': '1', 'username': 'test10', 'authpriv': '1', 'authpass': 'testpass', 'authproto': '0', 'privpass': 'testpass', 'privproto': '1'}]}]}}]})
+ Current k/v pairs of SNMP info for the WTI device after module execution.
+
+
+
+
+
+Status
+------
+
+
+
+
+- This is not guaranteed to have a backwards compatible interface. *[preview]*
+
+
+- This is maintained by community.
+
+
+
+Authors
+~~~~~~~
+
+- Western Telematic Inc. (@wtinetworkgear)
+
diff --git a/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_status_info.rst b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_status_info.rst
new file mode 100644
index 00000000..b537cf85
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_status_info.rst
@@ -0,0 +1,196 @@
+
+cpm_status_info -- Get general status information from WTI OOB and PDU devices
+==============================================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Get temperature general status from WTI OOB and PDU devices
+
+
+
+
+
+
+Parameters
+----------
+
+ cpm_url (True, str, None)
+ This is the URL of the WTI device to send the module.
+
+
+ cpm_username (True, str, None)
+ This is the Username of the WTI device to send the module.
+
+
+ cpm_password (True, str, None)
+ This is the Password of the WTI device to send the module.
+
+
+ use_https (False, bool, True)
+ Designates to use an https connection or http connection.
+
+
+ validate_certs (False, bool, True)
+ If false, SSL certificates will not be validated. This should only be used
+
+ on personally controlled sites using self-signed certificates.
+
+
+ use_proxy (False, bool, False)
+ Flag to control if the lookup will observe HTTP proxy environment variables when present.
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - Use ``groups/cpm`` in ``module_defaults`` to set common options used between CPM modules.)
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ - name: Get the Status Information for a WTI device
+ cpm_status_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+
+ - name: Get the Status Information for a WTI device
+ cpm_status_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: false
+ validate_certs: false
+
+
+
+Return Values
+-------------
+
+ data (always, complex, )
+ The output JSON returned from the commands sent
+
+ vendor (success, str, wti)
+ Identifies WTI device as a WTI device.
+
+ product (success, str, CPM-800-1-CA)
+ Current Product Part Number of the WTI device.
+
+ totalports (success, str, 9)
+ Total serial ports of the WTI device.
+
+ totalplugs (success, str, 8)
+ Total Power Outlet plugs of the WTI device.
+
+ option1/2 (success, str, WPO-STRT-CPM8 / W4G-VZW-CPM8)
+ Various Identity options of the WTI.
+
+ softwareversion (success, str, 6.60 19 Feb 2020)
+ Expanded Firmware version of the WTI device.
+
+ serialnumber (success, str, 12345678901234)
+ Current Serial number of the WTI device.
+
+ assettag (success, str, ARTE121)
+ Current Asset Tag of the WTI device.
+
+ siteid (success, str, GENEVARACK)
+ Current Site-ID of the WTI device.
+
+ analogmodemphonenumber (success, str, 9495869959)
+ Current Analog Modem (if installed) Phone number of the WTI device.
+
+ modeminstalled (success, str, Yes, 4G/LTE)
+ Identifies if a modem is installed in the WTI device.
+
+ modemmodel (success, str, MTSMC-LVW2)
+ Identifies the modem model number (if installed) in the WTI device.
+
+ gig_dualphy (success, str, Yes, Yes)
+ Identifies dual ethernet port and gigabyte ethernet ports in the WTI device.
+
+ cpu_boardprogramdate (success, str, ARM, 4-30-2019)
+ Current Board and Program date of the WTI device.
+
+ ram_flash (success, str, 512 MB, 128 MB)
+ Total RAM and FLASH installed in the WTI device..
+
+ lineinputcount_rating (success, str, 1 , 20 Amps)
+ Identifies total power inlets and their power rating.
+
+ currentmonitor (success, str, Yes)
+ Identifies if the unit has current monitoring capabilites.
+
+ keylength (success, str, 2048)
+ Current key length of the WTI device.
+
+ opensslversion (success, str, 1.1.1d 10 Sep 2019)
+ Current OpenSSL version running on the WTI device.
+
+ opensshversion (success, str, 8.2p1)
+ Current OpenSSH running on the WTI device.
+
+ apacheversion (success, str, 2.4.41)
+ Current Apache Web version running on the WTI device.
+
+ apirelease (success, str, March 2020)
+ Current Date of the API release of the WTI device.
+
+ uptime (success, str, 259308.26)
+ Current uptime of the WTI device.
+
+ energywise (success, str, 1.2.0)
+ Current Energywise version of the WTI device.
+
+ restful (success, str, v1.0, v2 (Mar20))
+ Current RESTful version of the WTI device.
+
+ interface_list (success, str, eth0)
+ Current ethernet ports of the WTI device.
+
+ macaddresses (always, dict, {'mac': '00-09-9b-02-9a-26'})
+ Current mac addresses of the WTI device.
+
+ status (always, dict, {'code': '0', 'text': 'OK'})
+ Return status after module completion
+
+
+
+
+
+Status
+------
+
+
+
+
+- This is not guaranteed to have a backwards compatible interface. *[preview]*
+
+
+- This is maintained by community.
+
+
+
+Authors
+~~~~~~~
+
+- Western Telematic Inc. (@wtinetworkgear)
+
diff --git a/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_temp_info.rst b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_temp_info.rst
new file mode 100644
index 00000000..7ccbe4aa
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_temp_info.rst
@@ -0,0 +1,124 @@
+
+cpm_temp_info -- Get temperature information from WTI OOB and PDU devices
+=========================================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Get temperature information from WTI OOB and PDU devices
+
+
+
+
+
+
+Parameters
+----------
+
+ cpm_url (True, str, None)
+ This is the URL of the WTI device to send the module.
+
+
+ cpm_username (True, str, None)
+ This is the Username of the WTI device to send the module.
+
+
+ cpm_password (True, str, None)
+ This is the Password of the WTI device to send the module.
+
+
+ use_https (False, bool, True)
+ Designates to use an https connection or http connection.
+
+
+ validate_certs (False, bool, True)
+ If false, SSL certificates will not be validated. This should only be used
+
+ on personally controlled sites using self-signed certificates.
+
+
+ use_proxy (False, bool, False)
+ Flag to control if the lookup will observe HTTP proxy environment variables when present.
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - Use ``groups/cpm`` in ``module_defaults`` to set common options used between CPM modules.)
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ - name: Get the Temperature Information of a WTI device
+ cpm_temp_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+
+ - name: Get the Temperature Information of a WTI device
+ cpm_temp_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: false
+ validate_certs: false
+
+
+
+Return Values
+-------------
+
+ data (always, complex, )
+ The output JSON returned from the commands sent
+
+ temperature (success, str, 76)
+ Current Temperature of the WTI device after module execution.
+
+ format (success, str, F)
+ Current Temperature format (Celsius or Fahrenheit) of the WTI device after module execution.
+
+ timestamp (success, str, 2020-02-24T20:54:03+00:00)
+ Current timestamp of the WTI device after module execution.
+
+ status (always, dict, {'code': '0', 'text': 'OK'})
+ Return status after module completion
+
+
+
+
+
+Status
+------
+
+
+
+
+- This is not guaranteed to have a backwards compatible interface. *[preview]*
+
+
+- This is maintained by community.
+
+
+
+Authors
+~~~~~~~
+
+- Western Telematic Inc. (@wtinetworkgear)
+
diff --git a/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_time_config.rst b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_time_config.rst
new file mode 100644
index 00000000..aa2d38fb
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_time_config.rst
@@ -0,0 +1,161 @@
+
+cpm_time_config -- Set Time/Date parameters in WTI OOB and PDU devices.
+=======================================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Set Time/Date and NTP parameters parameters in WTI OOB and PDU devices
+
+
+
+
+
+
+Parameters
+----------
+
+ cpm_url (True, str, None)
+ This is the URL of the WTI device to send the module.
+
+
+ cpm_username (True, str, None)
+ This is the Username of the WTI device to send the module.
+
+
+ cpm_password (True, str, None)
+ This is the Password of the WTI device to send the module.
+
+
+ use_https (False, bool, True)
+ Designates to use an https connection or http connection.
+
+
+ validate_certs (False, bool, True)
+ If false, SSL certificates will not be validated. This should only be used
+
+ on personally controlled sites using self-signed certificates.
+
+
+ use_proxy (False, bool, False)
+ Flag to control if the lookup will observe HTTP proxy environment variables when present.
+
+
+ date (False, str, None)
+ Static date in the format of two digit month, two digit day, four digit year separated by a slash symbol.
+
+
+ time (False, str, None)
+ Static time in the format of two digit hour, two digit minute, two digit second separated by a colon symbol.
+
+
+ timezone (False, int, None)
+ This is timezone that is assigned to the WTI device.
+
+
+ ntpenable (False, int, None)
+ This enables or disables the NTP client service.
+
+
+ ipv4address (False, str, None)
+ Comma separated string of up to two addresses for a primary and secondary IPv4 base NTP server.
+
+
+ ipv6address (False, str, None)
+ Comma separated string of up to two addresses for a primary and secondary IPv6 base NTP server.
+
+
+ timeout (False, int, None)
+ Set the network timeout in seconds of contacting the NTP servers, valid options can be from 1-60.
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - Use ``groups/cpm`` in ``module_defaults`` to set common options used between CPM modules.
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ # Set a static time/date and timezone of a WTI device
+ - name: Set known fixed time/date of a WTI device
+ cpm_time_config:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+ date: "12/12/2019"
+ time: "09:23:46"
+ timezone: 5
+
+ # Enable NTP and set primary and seconday servers of a WTI device
+ - name: Set NTP primary and seconday servers of a WTI device
+ cpm_time_config:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+ timezone: 5
+ ntpenable: 1
+ ipv4address: "129.6.15.28.pool.ntp.org"
+ timeout: 15
+
+
+
+Return Values
+-------------
+
+ data (always, complex, )
+ The output JSON returned from the commands sent
+
+ date (success, str, 11/14/2019)
+ Current Date of the WTI device after module execution.
+
+ time (success, str, 12:12:00)
+ Current Time of the WTI device after module execution.
+
+ timezone (success, int, 5)
+ Current Timezone of the WTI device after module execution.
+
+ ntp (always, dict, {'enable': '0', 'ietf-ipv4': {'address': [{'primary': '192.168.0.169', 'secondary': '12.34.56.78'}]}, 'ietf-ipv6': {'address': [{'primary': '', 'secondary': ''}]}, 'timeout': '4'})
+ Current k/v pairs of ntp info of the WTI device after module execution.
+
+
+
+
+
+Status
+------
+
+
+
+
+- This is not guaranteed to have a backwards compatible interface. *[preview]*
+
+
+- This is maintained by community.
+
+
+
+Authors
+~~~~~~~
+
+- Western Telematic Inc. (@wtinetworkgear)
+
diff --git a/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_time_info.rst b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_time_info.rst
new file mode 100644
index 00000000..0b99e2c2
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_time_info.rst
@@ -0,0 +1,124 @@
+
+cpm_time_info -- Get Time/Date parameters in WTI OOB and PDU devices
+====================================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Get Time/Date and NTP parameters from WTI OOB and PDU devices
+
+
+
+
+
+
+Parameters
+----------
+
+ cpm_url (True, str, None)
+ This is the URL of the WTI device to send the module.
+
+
+ cpm_username (True, str, None)
+ This is the Username of the WTI device to send the module.
+
+
+ cpm_password (True, str, None)
+ This is the Password of the WTI device to send the module.
+
+
+ use_https (False, bool, True)
+ Designates to use an https connection or http connection.
+
+
+ validate_certs (False, bool, True)
+ If false, SSL certificates will not be validated. This should only be used
+
+ on personally controlled sites using self-signed certificates.
+
+
+ use_proxy (False, bool, False)
+ Flag to control if the lookup will observe HTTP proxy environment variables when present.
+
+
+
+
+
+Notes
+-----
+
+.. note::
+ - Use ``groups/cpm`` in ``module_defaults`` to set common options used between CPM modules.)
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ - name: Get the Time/Date Parameters for a WTI device
+ cpm_time_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+
+ - name: Get the Time/Date Parameters for a WTI device
+ cpm_time_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: false
+ validate_certs: false
+
+
+
+Return Values
+-------------
+
+ data (always, complex, )
+ The output JSON returned from the commands sent
+
+ date (success, str, 11/14/2019)
+ Current Date of the WTI device after module execution.
+
+ time (success, str, 12:12:00)
+ Current Time of the WTI device after module execution.
+
+ timezone (success, int, 5)
+ Current Timezone of the WTI device after module execution.
+
+ ntp (always, dict, {'enable': '0', 'ietf-ipv4': {'address': [{'primary': '192.168.0.169', 'secondary': '12.34.56.78'}]}, 'ietf-ipv6': {'address': [{'primary': '', 'secondary': ''}]}, 'timeout': '4'})
+ Current k/v pairs of ntp info of the WTI device after module execution.
+
+
+
+
+
+Status
+------
+
+
+
+
+- This is not guaranteed to have a backwards compatible interface. *[preview]*
+
+
+- This is maintained by community.
+
+
+
+Authors
+~~~~~~~
+
+- Western Telematic Inc. (@wtinetworkgear)
+
diff --git a/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_user.rst b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_user.rst
new file mode 100644
index 00000000..bca1d2a3
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/docs/cpm_user.rst
@@ -0,0 +1,433 @@
+
+cpm_user -- Get various status and parameters from WTI OOB and PDU devices
+==========================================================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+
+Get/Add/Edit Delete Users from WTI OOB and PDU devices
+
+
+
+
+
+
+Parameters
+----------
+
+ cpm_action (True, str, None)
+ This is the Action to send the module.
+
+
+ cpm_url (True, str, None)
+ This is the URL of the WTI device to send the module.
+
+
+ cpm_username (True, str, None)
+ This is the Basic Authentication Username of the WTI device to send the module.
+
+
+ cpm_password (True, str, None)
+ This is the Basic Authentication Password of the WTI device to send the module.
+
+
+ use_https (False, bool, True)
+ Designates to use an https connection or http connection.
+
+
+ validate_certs (False, bool, True)
+ If false, SSL certificates will not be validated. This should only be used
+
+ on personally controlled sites using self-signed certificates.
+
+
+ use_proxy (False, bool, False)
+ F
+
+ l
+
+ a
+
+ g
+
+
+
+ t
+
+ o
+
+
+
+ c
+
+ o
+
+ n
+
+ t
+
+ r
+
+ o
+
+ l
+
+
+
+ i
+
+ f
+
+
+
+ t
+
+ h
+
+ e
+
+
+
+ l
+
+ o
+
+ o
+
+ k
+
+ u
+
+ p
+
+
+
+ w
+
+ i
+
+ l
+
+ l
+
+
+
+ o
+
+ b
+
+ s
+
+ e
+
+ r
+
+ v
+
+ e
+
+
+
+ H
+
+ T
+
+ T
+
+ P
+
+
+
+ p
+
+ r
+
+ o
+
+ x
+
+ y
+
+
+
+ e
+
+ n
+
+ v
+
+ i
+
+ r
+
+ o
+
+ n
+
+ m
+
+ e
+
+ n
+
+ t
+
+
+
+ v
+
+ a
+
+ r
+
+ i
+
+ a
+
+ b
+
+ l
+
+ e
+
+ s
+
+
+
+ w
+
+ h
+
+ e
+
+ n
+
+
+
+ p
+
+ r
+
+ e
+
+ s
+
+ e
+
+ n
+
+ t
+
+ .
+
+
+ user_name (True, str, None)
+ This is the User Name that needs to be create/modified/deleted
+
+
+ user_pass (False, str, None)
+ This is the User Password that needs to be create/modified/deleted
+
+ If the user is being Created this parameter is required
+
+
+ user_accesslevel (False, int, None)
+ This is the access level that needs to be create/modified/deleted
+
+ 0 View, 1 User, 2 SuperUser, 3 Administrator
+
+
+ user_accessssh (False, int, None)
+ If the user has access to the WTI device via SSH
+
+ 0 No , 1 Yes
+
+
+ user_accessserial (False, int, None)
+ If the user has access to the WTI device via Serial ports
+
+ 0 No , 1 Yes
+
+
+ user_accessweb (False, int, None)
+ If the user has access to the WTI device via Web
+
+ 0 No , 1 Yes
+
+
+ user_accessapi (False, int, None)
+ If the user has access to the WTI device via RESTful APIs
+
+ 0 No , 1 Yes
+
+
+ user_accessmonitor (False, int, None)
+ If the user has ability to monitor connection sessions
+
+ 0 No , 1 Yes
+
+
+ user_accessoutbound (False, int, None)
+ If the user has ability to initiate Outbound connection
+
+ 0 No , 1 Yes
+
+
+ user_portaccess (False, str, None)
+ If AccessLevel is lower than Administrator, which ports the user has access
+
+
+ user_plugaccess (False, str, None)
+ If AccessLevel is lower than Administrator, which plugs the user has access
+
+
+ user_groupaccess (False, str, None)
+ If AccessLevel is lower than Administrator, which Groups the user has access
+
+
+ user_callbackphone (False, str, None)
+ This is the Call Back phone number used for POTS modem connections
+
+
+
+
+
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml+jinja
+
+
+ # Get User Parameters
+ - name: Get the User Parameters for the given user of a WTI device
+ cpm_user:
+ cpm_action: "getuser"
+ cpm_url: "rest.wti.com"
+ cpm_username: "restuser"
+ cpm_password: "restfuluserpass12"
+ use_https: true
+ validate_certs: true
+ user_name: "usernumberone"
+
+ # Create User
+ - name: Create a User on a given WTI device
+ cpm_user:
+ cpm_action: "adduser"
+ cpm_url: "rest.wti.com"
+ cpm_username: "restuser"
+ cpm_password: "restfuluserpass12"
+ use_https: true
+ validate_certs: false
+ user_name: "usernumberone"
+ user_pass: "complicatedpassword"
+ user_accesslevel: 2
+ user_accessssh: 1
+ user_accessserial: 1
+ user_accessweb: 0
+ user_accessapi: 1
+ user_accessmonitor: 0
+ user_accessoutbound: 0
+ user_portaccess: "10011111"
+ user_plugaccess: "00000111"
+ user_groupaccess: "00000000"
+
+ # Edit User
+ - name: Edit a User on a given WTI device
+ cpm_user:
+ cpm_action: "edituser"
+ cpm_url: "rest.wti.com"
+ cpm_username: "restuser"
+ cpm_password: "restfuluserpass12"
+ use_https: true
+ validate_certs: false
+ user_name: "usernumberone"
+ user_pass: "newpasswordcomplicatedpassword"
+
+ # Delete User
+ - name: Delete a User from a given WTI device
+ cpm_user:
+ cpm_action: "deleteuser"
+ cpm_url: "rest.wti.com"
+ cpm_username: "restuser"
+ cpm_password: "restfuluserpass12"
+ use_https: true
+ validate_certs: true
+ user_name: "usernumberone"
+
+
+
+Return Values
+-------------
+
+ data (always, str, )
+ The output JSON returned from the commands sent
+
+
+
+
+Status
+------
+
+
+
+
+- This is not guaranteed to have a backwards compatible interface. *[preview]*
+
+
+- This is maintained by community.
+
+
+
+Authors
+~~~~~~~
+
+- W
+- e
+- s
+- t
+- e
+- r
+- n
+-
+- T
+- e
+- l
+- e
+- m
+- a
+- t
+- i
+- c
+-
+- I
+- n
+- c
+- .
+-
+- (
+- @
+- w
+- t
+- i
+- n
+- e
+- t
+- w
+- o
+- r
+- k
+- g
+- e
+- a
+- r
+- )
+
diff --git a/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_config/cpm_config_backup.yml b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_config/cpm_config_backup.yml
new file mode 100644
index 00000000..e7795ffb
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_config/cpm_config_backup.yml
@@ -0,0 +1,26 @@
+# ansible-playbook ./cpm_config_backup.yml -e ansible_hosts=nameofhost
+- name: Get Device Parameters
+ hosts: "{{ansible_hosts}}" # pass as -e ansible_hosts=wti_demo on the commandline
+ collections:
+ - wti.remote
+ connection: local
+ gather_facts: False
+
+ tasks:
+ - set_fact: use_https=False
+ when: use_https is undefined
+ - set_fact: validate_certs=False
+ when: validate_certs is undefined
+
+ - name: run Get Network Interface
+ cpm_config_backup:
+ cpm_url: "{{ansible_host}}"
+ cpm_username: "{{ansible_user}}"
+ cpm_password: "{{ansible_pw}}"
+ use_https: "{{use_https}}"
+ validate_certs: "{{validate_certs}}"
+
+ register: testout
+ - name: dump test output
+ debug:
+ msg: "{{ testout['data'] }}"
diff --git a/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_config/cpm_config_restore.yml b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_config/cpm_config_restore.yml
new file mode 100644
index 00000000..2a43e3db
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_config/cpm_config_restore.yml
@@ -0,0 +1,27 @@
+# ansible-playbook ./cpm_config_restore.yml -e ansible_hosts=nameofhost
+- name: Set Device Parameters
+ hosts: "{{ansible_hosts}}" # pass as -e ansible_hosts=wti_demo on the commandline
+ collections:
+ - wti.remote
+ connection: local
+ gather_facts: False
+
+ tasks:
+ - set_fact: use_https=False
+ when: use_https is undefined
+ - set_fact: validate_certs=False
+ when: validate_certs is undefined
+
+ - name: run Set Device Parameters
+ cpm_config_restore:
+ cpm_url: "{{ansible_host}}"
+ cpm_username: "{{ansible_user}}"
+ cpm_password: "{{ansible_pw}}"
+ cpm_filename: "wti-192-10-10-239-2020-02-13T16-17-22-xml"
+ use_https: "{{use_https}}"
+ validate_certs: "{{validate_certs}}"
+
+ register: testout
+ - name: dump test output
+ debug:
+ msg: "{{ testout['data'] }}"
diff --git a/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_interface/interface_config.yml b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_interface/interface_config.yml
new file mode 100644
index 00000000..439b618a
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_interface/interface_config.yml
@@ -0,0 +1,31 @@
+# ansible-playbook ./interface_config.yml -e ansible_hosts=nameofhost
+- name: Set Network Interface parameters
+ hosts: "{{ansible_hosts}}" # pass as -e ansible_hosts=wti_demo on the commandline
+ collections:
+ - wti.remote
+ connection: local
+ gather_facts: False
+
+ tasks:
+ - set_fact: use_https=True
+ when: use_https is undefined
+ - set_fact: validate_certs=True
+ when: validate_certs is undefined
+
+ - cpm_interface_config:
+ cpm_url: "{{ansible_host}}"
+ cpm_username: "{{ansible_user}}"
+ cpm_password: "{{ansible_pw}}"
+ interface: "eth1"
+ ipv4netmask: "255.255.255.0"
+ ipv4gateway: "192.168.0.2"
+ ipv4address: "192.168.0.16"
+ negotiation: 0
+ ipv4dhcpenable: 0
+ use_https: "{{use_https}}"
+ validate_certs: "{{validate_certs}}"
+
+ register: testout
+ - name: dump test output
+ debug:
+ msg: "{{ testout['data'] }}"
diff --git a/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_interface/interface_info.yml b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_interface/interface_info.yml
new file mode 100644
index 00000000..9b967f47
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_interface/interface_info.yml
@@ -0,0 +1,26 @@
+# ansible-playbook ./interface_info.yml -e ansible_hosts=nameofhost
+- name: Get Network Interface parameters
+ hosts: "{{ansible_hosts}}" # pass as -e ansible_hosts=wti_demo on the commandline
+ collections:
+ - wti.remote
+ connection: local
+ gather_facts: False
+
+ tasks:
+ - set_fact: use_https=True
+ when: use_https is undefined
+ - set_fact: validate_certs=True
+ when: validate_certs is undefined
+
+ - cpm_interface_info:
+ cpm_url: "{{ansible_host}}"
+ cpm_username: "{{ansible_user}}"
+ cpm_password: "{{ansible_pw}}"
+ interface: "eth0"
+ use_https: "{{use_https}}"
+ validate_certs: "{{validate_certs}}"
+
+ register: testout
+ - name: dump test output
+ debug:
+ msg: "{{ testout['data'] }}"
diff --git a/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_iptables/iptables_config.yml b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_iptables/iptables_config.yml
new file mode 100644
index 00000000..6b80cf71
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_iptables/iptables_config.yml
@@ -0,0 +1,35 @@
+# ansible-playbook ./iptables_config.yml -e ansible_hosts=nameofhost
+- name: Set Network IPTABLES parameters
+ hosts: "{{ansible_hosts}}" # pass as -e ansible_hosts=wti_demo on the commandline
+ collections:
+ - wti.remote
+ connection: local
+ gather_facts: False
+
+ tasks:
+ - set_fact: use_https=True
+ when: use_https is undefined
+ - set_fact: validate_certs=True
+ when: validate_certs is undefined
+
+ - cpm_iptables_config:
+ cpm_url: "{{ansible_host}}"
+ cpm_username: "{{ansible_user}}"
+ cpm_password: "{{ansible_pw}}"
+ protocol: 0
+ index:
+ - 1
+ - 2
+ - 48
+ command:
+ - "iptables the passed in command 2.."
+ - "iptables the passed in command 4.."
+ - "iptables the passed in command 48."
+ clear: 0
+ use_https: "{{use_https}}"
+ validate_certs: "{{validate_certs}}"
+
+ register: testout
+ - name: dump test output
+ debug:
+ msg: "{{ testout['data'] }}"
diff --git a/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_iptables/iptables_info.yml b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_iptables/iptables_info.yml
new file mode 100644
index 00000000..d0f9f87b
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_iptables/iptables_info.yml
@@ -0,0 +1,25 @@
+# ansible-playbook ./iptables_info.yml -e ansible_hosts=nameofhost
+- name: Get Network IPTABLES Parameters
+ hosts: "{{ansible_hosts}}" # pass as -e ansible_hosts=wti_demo on the commandline
+ collections:
+ - wti.remote
+ connection: local
+ gather_facts: False
+
+ tasks:
+ - set_fact: use_https=True
+ when: use_https is undefined
+ - set_fact: validate_certs=True
+ when: validate_certs is undefined
+
+ - cpm_iptables_info:
+ cpm_url: "{{ansible_host}}"
+ cpm_username: "{{ansible_user}}"
+ cpm_password: "{{ansible_pw}}"
+ use_https: "{{use_https}}"
+ validate_certs: "{{validate_certs}}"
+
+ register: testout
+ - name: dump test output
+ debug:
+ msg: "{{ testout['data'] }}"
diff --git a/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_plugconfig/plug_config.yml b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_plugconfig/plug_config.yml
new file mode 100644
index 00000000..aa96a7e8
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_plugconfig/plug_config.yml
@@ -0,0 +1,32 @@
+# ansible-playbook ./plug_config.yml -e ansible_hosts=nameofhost
+- name: Set Plug Parameters
+ hosts: "{{ansible_hosts}}" # pass as -e ansible_hosts=wti_demo on the commandline
+ collections:
+ - wti.remote
+ connection: local
+ gather_facts: False
+
+ tasks:
+ - set_fact: use_https=True
+ when: use_https is undefined
+ - set_fact: validate_certs=True
+ when: validate_certs is undefined
+
+ - name: run Set Plug Parameters
+ cpm_plugconfig:
+ cpm_action: "setplugconfig"
+ cpm_url: "{{ansible_host}}"
+ cpm_username: "{{ansible_user}}"
+ cpm_password: "{{ansible_pw}}"
+ plug_id: "2" # plug 2 is being changed
+ plug_name: "plugname2"
+ plug_bootdelay: 1
+ plug_default: 0
+ plug_bootpriority: 99
+ use_https: "{{use_https}}"
+ validate_certs: "{{validate_certs}}"
+
+ register: testout
+ - name: dump test output
+ debug:
+ msg: "{{ testout }}"
diff --git a/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_plugconfig/plug_info.yml b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_plugconfig/plug_info.yml
new file mode 100644
index 00000000..25bb39fe
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_plugconfig/plug_info.yml
@@ -0,0 +1,28 @@
+# ansible-playbook ./plug_info.yml -e ansible_hosts=nameofhost
+- name: Get Plug Parameters
+ hosts: "{{ansible_hosts}}" # pass as -e ansible_hosts=wti_demo on the commandline
+ collections:
+ - wti.remote
+ connection: local
+ gather_facts: False
+
+ tasks:
+ - set_fact: use_https=True
+ when: use_https is undefined
+ - set_fact: validate_certs=True
+ when: validate_certs is undefined
+
+ - name: run Get Plug Parameters of plug 1
+ cpm_plugconfig:
+ cpm_action: "getplugconfig"
+ cpm_url: "{{ansible_host}}"
+ cpm_username: "{{ansible_user}}"
+ cpm_password: "{{ansible_pw}}"
+ plug_id: "1"
+ use_https: "{{use_https}}"
+ validate_certs: "{{validate_certs}}"
+
+ register: testout
+ - name: dump test output
+ debug:
+ msg: "{{ testout['data'] }}"
diff --git a/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_serial_ports/serial_ports_config.yml b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_serial_ports/serial_ports_config.yml
new file mode 100644
index 00000000..5f067075
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_serial_ports/serial_ports_config.yml
@@ -0,0 +1,39 @@
+# ansible-playbook ./serial_port_config.yml -e ansible_hosts=nameofhost
+- name: Set Serial Port Parameters
+ hosts: "{{ansible_hosts}}" # pass as -e ansible_hosts=wti_demo on the commandline
+ collections:
+ - wti.remote
+ connection: local
+ gather_facts: False
+
+ tasks:
+ - set_fact: use_https=True
+ when: use_https is undefined
+ - set_fact: validate_certs=True
+ when: validate_certs is undefined
+
+ - name: run Set Port Parameters of Port 4
+ cpm_serial_port_config:
+ cpm_url: "{{ansible_host}}"
+ cpm_username: "{{ansible_user}}"
+ cpm_password: "{{ansible_pw}}"
+ port: 4
+ baud: 4
+ portname: "Sam4"
+ handshake: 2
+ stopbits: 1
+ parity: 0
+ mode: 1
+ cmd: 0
+ seq: 1
+ tout: 1
+ echo: 0
+ break_allow: True
+ logoff: "^W"
+ use_https: "{{use_https}}"
+ validate_certs: "{{validate_certs}}"
+
+ register: testout
+ - name: dump test output
+ debug:
+ msg: "{{ testout['data'] }}"
diff --git a/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_serial_ports/serial_ports_info.yml b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_serial_ports/serial_ports_info.yml
new file mode 100644
index 00000000..2b96d3d8
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_serial_ports/serial_ports_info.yml
@@ -0,0 +1,27 @@
+# ansible-playbook ./serial_port_info.yml -e ansible_hosts=nameofhost
+- name: Get Serial Port Parameters
+ hosts: "{{ansible_hosts}}" # pass as -e ansible_hosts=wti_demo on the commandline
+ collections:
+ - wti.remote
+ connection: local
+ gather_facts: False
+
+ tasks:
+ - set_fact: use_https=True
+ when: use_https is undefined
+ - set_fact: validate_certs=True
+ when: validate_certs is undefined
+
+ - name: run Get Port Parameters of Ports 1, 2 and 3
+ cpm_serial_port_info:
+ cpm_url: "{{ansible_host}}"
+ cpm_username: "{{ansible_user}}"
+ cpm_password: "{{ansible_pw}}"
+ port: "1,2,3"
+ use_https: "{{use_https}}"
+ validate_certs: "{{validate_certs}}"
+
+ register: testout
+ - name: dump test output
+ debug:
+ msg: "{{ testout['data'] }}"
diff --git a/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_snmp/snmp_config.yml b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_snmp/snmp_config.yml
new file mode 100644
index 00000000..3eee8a22
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_snmp/snmp_config.yml
@@ -0,0 +1,54 @@
+# ansible-playbook ./snmp_config.yml -e ansible_hosts=nameofhost
+- name: Set Network SNMP Parameters
+ hosts: "{{ansible_hosts}}" # pass as -e ansible_hosts=wti_demo on the commandline
+ collections:
+ - wti.remote
+ connection: local
+ gather_facts: False
+
+ tasks:
+ - set_fact: use_https=True
+ when: use_https is undefined
+ - set_fact: validate_certs=True
+ when: validate_certs is undefined
+
+ - name: run Set interface parameters
+ cpm_snmp_config:
+ cpm_url: "{{ansible_host}}"
+ cpm_username: "{{ansible_user}}"
+ cpm_password: "{{ansible_pw}}"
+ interface: "eth0"
+ protocol: 0
+ clear: 0
+ enable: 0
+ readonly: 0
+ version: 2
+ index:
+ - 2
+ - 4
+ username:
+ - "username1b"
+ - "username3a"
+ authpass:
+ - "xxxxx1abc"
+ - "authpass3a"
+ privpass:
+ - "privpass2a"
+ - "privpass3a"
+ authpriv:
+ - 1
+ - 0
+ authproto:
+ - 0
+ - 0
+ privproto:
+ - 0
+ - 0
+
+ use_https: "{{use_https}}"
+ validate_certs: "{{validate_certs}}"
+
+ register: testout
+ - name: dump test output
+ debug:
+ msg: "{{ testout['data'] }}"
diff --git a/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_snmp/snmp_info.yml b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_snmp/snmp_info.yml
new file mode 100644
index 00000000..357e8cf3
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_snmp/snmp_info.yml
@@ -0,0 +1,29 @@
+# ansible-playbook ./snmp_info.yml -e ansible_hosts=nameofhost
+- name: Get Network SNMP Parameters
+ hosts: "{{ansible_hosts}}" # pass as -e ansible_hosts=wti_demo on the commandline
+ collections:
+ - wti.remote
+ connection: local
+ gather_facts: False
+
+ tasks:
+ - set_fact: use_https=True
+ when: use_https is undefined
+ - set_fact: validate_certs=True
+ when: validate_certs is undefined
+ - set_fact: ansible_interface="eth0"
+ when: ansible_interface is undefined
+
+ - name: Run Get SNMP parameters
+ cpm_snmp_info:
+ cpm_url: "{{ansible_host}}"
+ cpm_username: "{{ansible_user}}"
+ cpm_password: "{{ansible_pw}}"
+ interface: "{{ansible_interface}}"
+ use_https: "{{use_https}}"
+ validate_certs: "{{validate_certs}}"
+
+ register: testout
+ - name: dump test output
+ debug:
+ msg: "{{ testout['data'] }}"
diff --git a/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_status/alarm_info.yml b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_status/alarm_info.yml
new file mode 100644
index 00000000..d132b9d9
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_status/alarm_info.yml
@@ -0,0 +1,25 @@
+# ansible-playbook ./alarm_info.yml -e ansible_hosts=yourhostname
+- name: Get Alarm information from WTI device
+ hosts: "{{ansible_hosts}}" # pass as -e ansible_hosts=wti_demo on the commandline
+ collections:
+ - wti.remote
+ connection: local
+ gather_facts: False
+
+ tasks:
+ - set_fact: use_https=True
+ when: use_https is undefined
+ - set_fact: validate_certs=True
+ when: validate_certs is undefined
+
+ - wti.remote.cpm_alarm_info:
+ cpm_url: "{{ansible_host}}"
+ cpm_username: "{{ansible_user}}"
+ cpm_password: "{{ansible_pw}}"
+ use_https: "{{use_https}}"
+ validate_certs: "{{validate_certs}}"
+
+ register: testout
+ - name: dump test output
+ debug:
+ msg: "{{ testout['data'] }}"
diff --git a/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_status/current_info.yml b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_status/current_info.yml
new file mode 100644
index 00000000..356e5e9e
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_status/current_info.yml
@@ -0,0 +1,27 @@
+# ansible-playbook ./current_info.yml -e ansible_hosts=yourhostname
+- name: Get Current information from WTI device
+ hosts: "{{ansible_hosts}}" # pass as -e ansible_hosts=wti_demo on the commandline
+ collections:
+ - wti.remote
+ connection: local
+ gather_facts: False
+
+ tasks:
+ - set_fact: use_https=True
+ when: use_https is undefined
+ - set_fact: validate_certs=True
+ when: validate_certs is undefined
+
+ - wti.remote.cpm_current_info:
+ cpm_url: "{{ansible_host}}"
+ cpm_username: "{{ansible_user}}"
+ cpm_password: "{{ansible_pw}}"
+ cpm_startdate: "02-02-2020"
+ cpm_enddate: "02-28-2020"
+ use_https: "{{use_https}}"
+ validate_certs: "{{validate_certs}}"
+
+ register: testout
+ - name: dump test output
+ debug:
+ msg: "{{ testout['data'] }}"
diff --git a/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_status/firmware_info.yml b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_status/firmware_info.yml
new file mode 100644
index 00000000..614347f6
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_status/firmware_info.yml
@@ -0,0 +1,25 @@
+# ansible-playbook ./firmware_info.yml -e ansible_hosts=yourhostname
+- name: Get Firmware information from WTI device
+ hosts: "{{ansible_hosts}}" # pass as -e ansible_hosts=wti_demo on the commandline
+ collections:
+ - wti.remote
+ connection: local
+ gather_facts: False
+
+ tasks:
+ - set_fact: use_https=True
+ when: use_https is undefined
+ - set_fact: validate_certs=True
+ when: validate_certs is undefined
+
+ - wti.remote.cpm_firmware_info:
+ cpm_url: "{{ansible_host}}"
+ cpm_username: "{{ansible_user}}"
+ cpm_password: "{{ansible_pw}}"
+ use_https: "{{use_https}}"
+ validate_certs: "{{validate_certs}}"
+
+ register: testout
+ - name: dump test output
+ debug:
+ msg: "{{ testout['data'] }}"
diff --git a/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_status/power_info.yml b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_status/power_info.yml
new file mode 100644
index 00000000..da0ae80f
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_status/power_info.yml
@@ -0,0 +1,27 @@
+# ansible-playbook ./temp_info.yml -e ansible_hosts=yourhostname
+- name: Get Power information from WTI device
+ hosts: "{{ansible_hosts}}" # pass as -e ansible_hosts=wti_demo on the commandline
+ collections:
+ - wti.remote
+ connection: local
+ gather_facts: False
+
+ tasks:
+ - set_fact: use_https=True
+ when: use_https is undefined
+ - set_fact: validate_certs=True
+ when: validate_certs is undefined
+
+ - wti.remote.cpm_power_info:
+ cpm_url: "{{ansible_host}}"
+ cpm_username: "{{ansible_user}}"
+ cpm_password: "{{ansible_pw}}"
+ cpm_startdate: "02-02-2020"
+ cpm_enddate: "02-28-2020"
+ use_https: "{{use_https}}"
+ validate_certs: "{{validate_certs}}"
+
+ register: testout
+ - name: dump test output
+ debug:
+ msg: "{{ testout['data'] }}"
diff --git a/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_status/status_info.yml b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_status/status_info.yml
new file mode 100644
index 00000000..f34d963f
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_status/status_info.yml
@@ -0,0 +1,25 @@
+# ansible-playbook ./status_info.yml -e ansible_hosts=yourhostname
+- name: Get Status information from WTI device
+ hosts: "{{ansible_hosts}}" # pass as -e ansible_hosts=wti_demo on the commandline
+ collections:
+ - wti.remote
+ connection: local
+ gather_facts: False
+
+ tasks:
+ - set_fact: use_https=True
+ when: use_https is undefined
+ - set_fact: validate_certs=True
+ when: validate_certs is undefined
+
+ - wti.remote.cpm_status_info:
+ cpm_url: "{{ansible_host}}"
+ cpm_username: "{{ansible_user}}"
+ cpm_password: "{{ansible_pw}}"
+ use_https: "{{use_https}}"
+ validate_certs: "{{validate_certs}}"
+
+ register: testout
+ - name: dump test output
+ debug:
+ msg: "{{ testout['data'] }}"
diff --git a/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_status/temp_info.yml b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_status/temp_info.yml
new file mode 100644
index 00000000..e8a8896a
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_status/temp_info.yml
@@ -0,0 +1,25 @@
+# ansible-playbook ./temp_info.yml -e ansible_hosts=yourhostname
+- name: Get Temperature information from WTI device
+ hosts: "{{ansible_hosts}}" # pass as -e ansible_hosts=wti_demo on the commandline
+ collections:
+ - wti.remote
+ connection: local
+ gather_facts: False
+
+ tasks:
+ - set_fact: use_https=True
+ when: use_https is undefined
+ - set_fact: validate_certs=True
+ when: validate_certs is undefined
+
+ - wti.remote.cpm_temp_info:
+ cpm_url: "{{ansible_host}}"
+ cpm_username: "{{ansible_user}}"
+ cpm_password: "{{ansible_pw}}"
+ use_https: "{{use_https}}"
+ validate_certs: "{{validate_certs}}"
+
+ register: testout
+ - name: dump test output
+ debug:
+ msg: "{{ testout['data'] }}"
diff --git a/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_time_date/time_config.yml b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_time_date/time_config.yml
new file mode 100644
index 00000000..0580d081
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_time_date/time_config.yml
@@ -0,0 +1,29 @@
+# ansible-playbook ./time_config.yml -e ansible_hosts=nameofhost
+- name: Set Time Date parameters
+ hosts: "{{ansible_hosts}}" # pass as -e ansible_hosts=wti_demo on the commandline
+ collections:
+ - wti.remote
+ connection: local
+ gather_facts: False
+
+ tasks:
+ - set_fact: use_https=False
+ when: use_https is undefined
+ - set_fact: validate_certs=False
+ when: validate_certs is undefined
+
+ - cpm_time_config:
+ cpm_url: "{{ansible_host}}"
+ cpm_username: "{{ansible_user}}"
+ cpm_password: "{{ansible_pw}}"
+ timezone: 5
+ ntpenable: 1
+ ipv4address: "time1.google.com,time2.google.com"
+ timeout: 4
+ use_https: "{{use_https}}"
+ validate_certs: "{{validate_certs}}"
+
+ register: testout
+ - name: dump test output
+ debug:
+ msg: "{{ testout['data'] }}"
diff --git a/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_time_date/time_info.yml b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_time_date/time_info.yml
new file mode 100644
index 00000000..e6dd887a
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_time_date/time_info.yml
@@ -0,0 +1,25 @@
+# ansible-playbook ./time_info.yml -e ansible_hosts=yourhostname
+- name: Get Time/Date and NTP parameters
+ hosts: "{{ansible_hosts}}" # pass as -e ansible_hosts=wti_demo on the commandline
+ collections:
+ - wti.remote
+ connection: local
+ gather_facts: False
+
+ tasks:
+ - set_fact: use_https=True
+ when: use_https is undefined
+ - set_fact: validate_certs=True
+ when: validate_certs is undefined
+
+ - cpm_time_info:
+ cpm_url: "{{ansible_host}}"
+ cpm_username: "{{ansible_user}}"
+ cpm_password: "{{ansible_pw}}"
+ use_https: "{{use_https}}"
+ validate_certs: "{{validate_certs}}"
+
+ register: testout
+ - name: dump test output
+ debug:
+ msg: "{{ testout['data'] }}"
diff --git a/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_user/user_add.yml b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_user/user_add.yml
new file mode 100644
index 00000000..a15fe25d
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_user/user_add.yml
@@ -0,0 +1,45 @@
+# ansible-playbook ./user_add.yml -e ansible_hosts=nameofhost
+- name: Add New User
+ hosts: "{{ansible_hosts}}" # pass as -e ansible_hosts=wti_demo on the commandline
+ collections:
+ - wti.remote
+ connection: local
+ gather_facts: False
+
+ vars_prompt:
+ - name: "user_name"
+ prompt: "Enter Username"
+ private: no
+ - name: "user_pass"
+ prompt: "Enter Password"
+
+ tasks:
+ - set_fact: use_https=True
+ when: use_https is undefined
+ - set_fact: validate_certs=True
+ when: validate_certs is undefined
+
+ - name: run Add New User
+ cpm_user:
+ cpm_action: "adduser"
+ cpm_url: "{{ansible_host}}"
+ cpm_username: "{{ansible_user}}"
+ cpm_password: "{{ansible_pw}}"
+ user_name: "{{user_name}}" # pass as -e user_name=sammy on the commandline
+ user_pass: "{{user_pass}}"
+ user_accesslevel: 1
+ user_accessserial: 0
+ user_accessapi: 1
+ user_accessweb: 0
+ user_accessoutbound: 1
+ user_accessssh: 1
+ user_portaccess: "10001110"
+ user_plugaccess: "11110000"
+ user_callbackphone: "9495551212"
+ use_https: "{{use_https}}"
+ validate_certs: "{{validate_certs}}"
+
+ register: output
+ - name: dump JSON output
+ debug:
+ msg: "{{ output.data }}"
diff --git a/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_user/user_delete.yml b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_user/user_delete.yml
new file mode 100644
index 00000000..e6e45054
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_user/user_delete.yml
@@ -0,0 +1,33 @@
+# ansible-playbook ./user_delete.yml -e ansible_hosts=nameofhost
+- name: Delete Exiting User
+ hosts: "{{ansible_hosts}}" # pass as -e ansible_hosts=wti_demo on the commandline
+ collections:
+ - wti.remote
+ connection: local
+ gather_facts: False
+
+ vars_prompt:
+ - name: "user_name"
+ prompt: "Enter Username"
+ private: no
+
+ tasks:
+ - set_fact: use_https=True
+ when: use_https is undefined
+ - set_fact: validate_certs=True
+ when: validate_certs is undefined
+
+ - name: run Delete Exiting User
+ cpm_user:
+ cpm_action: "deleteuser"
+ cpm_url: "{{ansible_host}}"
+ cpm_username: "{{ansible_user}}"
+ cpm_password: "{{ansible_pw}}"
+ user_name: "{{user_name}}" # pass as -e user_name=sammy on the commandline
+ use_https: "{{use_https}}"
+ validate_certs: false
+
+ register: output
+ - name: dump JSON output
+ debug:
+ msg: "{{ output.data }}"
diff --git a/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_user/user_edit.yml b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_user/user_edit.yml
new file mode 100644
index 00000000..00dc46ba
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_user/user_edit.yml
@@ -0,0 +1,37 @@
+# ansible-playbook ./user_edit.yml -e ansible_hosts=nameofhost
+- name: Edit Exiting User
+ hosts: "{{ansible_hosts}}" # pass as -e ansible_hosts=wti_demo on the commandline
+ collections:
+ - wti.remote
+ connection: local
+ gather_facts: False
+
+ vars_prompt:
+ - name: "user_name"
+ prompt: "Enter Username"
+ private: no
+ - name: "user_pass"
+ prompt: "Enter Password"
+
+ tasks:
+ - set_fact: use_https=True
+ when: use_https is undefined
+ - set_fact: validate_certs=True
+ when: validate_certs is undefined
+
+ - name: Run Edit Existing User
+ cpm_user:
+ cpm_action: "edituser"
+ cpm_url: "{{ansible_host}}"
+ cpm_username: "{{ansible_user}}"
+ cpm_password: "{{ansible_pw}}"
+ user_name: "{{user_name}}" # pass as -e user_name=sammy on the commandline
+ user_pass: "{{user_pass}}" # pass as -e user_pass=sammy on the commandline
+ user_accesslevel: 3
+ use_https: "{{use_https}}"
+ validate_certs: false
+
+ register: testout
+ - name: dump test output
+ debug:
+ msg: "{{ testout['data'] }}"
diff --git a/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_user/user_get.yml b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_user/user_get.yml
new file mode 100644
index 00000000..e782b4c2
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/playbooks/cpm_user/user_get.yml
@@ -0,0 +1,33 @@
+# ansible-playbook ./user_get.yml -e ansible_hosts=nameofhost
+- name: Get User Parameters
+ hosts: "{{ansible_hosts}}" # pass as -e ansible_hosts=wti_demo on the commandline
+ collections:
+ - wti.remote
+ connection: local
+ gather_facts: False
+
+ vars_prompt:
+ - name: "user_name"
+ prompt: "Enter Username"
+ private: no
+
+ tasks:
+ - set_fact: use_https=True
+ when: use_https is undefined
+ - set_fact: validate_certs=True
+ when: validate_certs is undefined
+
+ - name: run Get User Parameters
+ cpm_user:
+ cpm_action: "getuser"
+ cpm_url: "{{ansible_host}}"
+ cpm_username: "{{ansible_user}}"
+ cpm_password: "{{ansible_pw}}"
+ user_name: "{{user_name}}" # pass as -e user_name=sammy on the commandline
+ use_https: "{{use_https}}"
+ validate_certs: false
+
+ register: output
+ - name: dump JSON output
+ debug:
+ msg: "{{ output.data }}"
diff --git a/collections-debian-merged/ansible_collections/wti/remote/plugins/lookup/cpm_metering.py b/collections-debian-merged/ansible_collections/wti/remote/plugins/lookup/cpm_metering.py
new file mode 100644
index 00000000..cbf6470c
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/plugins/lookup/cpm_metering.py
@@ -0,0 +1,174 @@
+# (c) 2018, Western Telematic Inc. <kenp@wti.com>
+# (c) 2012-18 Ansible Project
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+
+ANSIBLE_METADATA = {
+ 'metadata_version': '1.1',
+ 'status': ['preview'],
+ 'supported_by': 'community'
+}
+
+DOCUMENTATION = """
+lookup: cpm_metering
+author: "Western Telematic Inc. (@wtinetworkgear)"
+version_added: "2.7"
+short_description: Get Power and Current data from WTI OOB/Combo and PDU devices
+description:
+ - "Get Power and Current data from WTI OOB/Combo and PDU devices"
+options:
+ _terms:
+ description:
+ - This is the Action to send the module.
+ type: str
+ required: true
+ choices: [ "getpower", "getcurrent" ]
+ cpm_url:
+ description:
+ - This is the URL of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_username:
+ description:
+ - This is the Username of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_password:
+ description:
+ - This is the Password of the WTI device to send the module.
+ type: str
+ required: true
+ use_https:
+ description:
+ - Designates to use an https connection or http connection.
+ type: bool
+ required: false
+ default: True
+ choices: [ True, False ]
+ validate_certs:
+ description:
+ - If false, SSL certificates will not be validated. This should only be used
+ - on personally controlled sites using self-signed certificates.
+ type: bool
+ required: false
+ default: true
+ use_proxy:
+ description: Flag to control if the lookup will observe HTTP proxy environment variables when present.
+ type: bool
+ default: True
+ startdate:
+ description:
+ - Start date of the range to look for power data
+ type: str
+ required: false
+ enddate:
+ description:
+ - End date of the range to look for power data
+ type: str
+ required: false
+"""
+
+EXAMPLES = """
+# Get Power data
+ - name: Get Power data for a given WTI device
+ - debug:
+ var: lookup('cpm_metering',
+ 'getpower',
+ validate_certs=true,
+ use_https=true,
+ cpm_url='rest.wti.com',
+ cpm_username='restpower',
+ cpm_password='restfulpowerpass12')
+
+# Get Current data
+ - name: Get Current data for a given WTI device
+ - debug:
+ var: lookup('cpm_metering',
+ 'getcurrent',
+ validate_certs=true,
+ use_https=true,
+ cpm_url='rest.wti.com',
+ cpm_username='restpower',
+ cpm_password='restfulpowerpass12')
+
+# Get Power data for a date range
+ - name: Get Power data for a given WTI device given a certain date range
+ - debug:
+ var: lookup('cpm_metering',
+ 'getpower',
+ validate_certs=true,
+ use_https=true,
+ cpm_url='rest.wti.com',
+ cpm_username='restpower',
+ cpm_password='restfulpowerpass12',
+ startdate='08-12-2018'
+ enddate='08-14-2018')
+"""
+
+RETURN = """
+ _list:
+ description: The output JSON returned from the commands sent
+ returned: always
+ type: str
+"""
+
+import base64
+
+from ansible.errors import AnsibleError
+from ansible.plugins.lookup import LookupBase
+from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
+from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
+from ansible.utils.display import Display
+
+display = Display()
+
+
+class LookupModule(LookupBase):
+
+ def run(self, terms, variables=None, **kwargs):
+ self.set_options(direct=kwargs)
+
+ ret = []
+ for term in terms:
+ auth = to_text(base64.b64encode(to_bytes('{0}:{1}'.format(self.get_option('cpm_username'), self.get_option('cpm_password')),
+ errors='surrogate_or_strict')))
+
+ additional = ""
+ if self.get_option("startdate") is not None and (len(self.get_option("startdate")) > 0):
+ if self.get_option("enddate") is not None and (len(self.get_option("enddate")) > 0):
+ additional = "?startdate=" + self.get_option("startdate") + "&enddate=" + self.get_option("enddate")
+
+ if self.get_option('use_https') is True:
+ protocol = "https://"
+ else:
+ protocol = "http://"
+
+ if (term == 'getpower'):
+ fullurl = ("%s%s/api/v2/config/power" % (protocol, self.get_option('cpm_url')))
+ elif (term == 'getcurrent'):
+ fullurl = ("%s%s/api/v2/config/current" % (protocol, self.get_option('cpm_url')))
+ else:
+ raise AnsibleError("Power command not recognized %s " % (term))
+
+ if (len(additional) > 0):
+ fullurl += additional
+
+ display.vvvv("cpm_metering connecting to %s" % fullurl)
+
+ try:
+ response = open_url(fullurl, validate_certs=self.get_option('validate_certs'), use_proxy=self.get_option('use_proxy'),
+ headers={'Content-Type': 'application/json', 'Authorization': "Basic %s" % auth})
+ except HTTPError as e:
+ raise AnsibleError("Received HTTP error for %s : %s" % (fullurl, to_native(e)))
+ except URLError as e:
+ raise AnsibleError("Failed lookup url for %s : %s" % (fullurl, to_native(e)))
+ except SSLValidationError as e:
+ raise AnsibleError("Error validating the server's certificate for %s: %s" % (fullurl, to_native(e)))
+ except ConnectionError as e:
+ raise AnsibleError("Error connecting to %s: %s" % (fullurl, to_native(e)))
+
+ ret.append(to_text(response.read()))
+
+ return ret
diff --git a/collections-debian-merged/ansible_collections/wti/remote/plugins/lookup/cpm_status.py b/collections-debian-merged/ansible_collections/wti/remote/plugins/lookup/cpm_status.py
new file mode 100644
index 00000000..37b67c67
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/plugins/lookup/cpm_status.py
@@ -0,0 +1,164 @@
+# (c) 2018, Western Telematic Inc. <kenp@wti.com>
+# (c) 2012-18 Ansible Project
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+
+ANSIBLE_METADATA = {
+ 'metadata_version': '1.1',
+ 'status': ['preview'],
+ 'supported_by': 'community'
+}
+
+DOCUMENTATION = """
+lookup: cpm_status
+author: "Western Telematic Inc. (@wtinetworkgear)"
+version_added: "2.7"
+short_description: Get status and parameters from WTI OOB and PDU devices.
+description:
+ - "Get various status and parameters from WTI OOB and PDU devices."
+options:
+ _terms:
+ description:
+ - This is the Action to send the module.
+ type: str
+ required: true
+ choices: [ "temperature", "firmware", "status", "alarms" ]
+ cpm_url:
+ description:
+ - This is the URL of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_username:
+ description:
+ - This is the Basic Authentication Username of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_password:
+ description:
+ - This is the Basic Authentication Password of the WTI device to send the module.
+ type: str
+ required: true
+ use_https:
+ description:
+ - Designates to use an https connection or http connection.
+ type: bool
+ required: false
+ default: true
+ validate_certs:
+ description:
+ - If false, SSL certificates will not be validated. This should only be used
+ - on personally controlled sites using self-signed certificates.
+ type: bool
+ required: false
+ default: true
+ use_proxy:
+ description: Flag to control if the lookup will observe HTTP proxy environment variables when present.
+ type: boolean
+ default: True
+"""
+
+EXAMPLES = """
+# Get temperature
+ - name: run Get Device Temperature
+ - debug:
+ var: lookup('cpm_status',
+ 'temperature',
+ validate_certs=true,
+ use_https=true,
+ cpm_url='rest.wti.com',
+ cpm_username='rest',
+ cpm_password='restfulpassword')
+
+# Get firmware version
+ - name: Get the firmware version of a given WTI device
+ - debug:
+ var: lookup('cpm_status',
+ 'firmware',
+ validate_certs=false,
+ use_https=true,
+ cpm_url="192.168.0.158",
+ cpm_username="super",
+ cpm_password="super")
+
+# Get status output
+ - name: Get the status output from a given WTI device
+ - debug:
+ var: lookup('cpm_status',
+ 'status',
+ validate_certs=true,
+ use_https=true,
+ cpm_url="rest.wti.com",
+ cpm_username="rest",
+ cpm_password="restfulpassword")
+
+# Get Alarm output
+ - name: Get the alarms status of a given WTI device
+ - debug:
+ var: lookup('cpm_status',
+ 'alarms',
+ validate_certs=false,
+ use_https=false,
+ cpm_url="192.168.0.158",
+ cpm_username="super",
+ cpm_password="super")
+"""
+
+RETURN = """
+ _list:
+ description: The output JSON returned from the commands sent
+ returned: always
+ type: str
+"""
+
+import base64
+
+from ansible.errors import AnsibleError
+from ansible.plugins.lookup import LookupBase
+from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
+from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
+
+
+class LookupModule(LookupBase):
+
+ def run(self, terms, variables=None, **kwargs):
+ self.set_options(direct=kwargs)
+
+ ret = []
+
+ for term in terms:
+ auth = to_text(base64.b64encode(to_bytes('{0}:{1}'.format(self.get_option('cpm_username'), self.get_option('cpm_password')),
+ errors='surrogate_or_strict')))
+
+ if self.get_option('use_https') is True:
+ protocol = "https://"
+ else:
+ protocol = "http://"
+
+ if (term == 'temperature'):
+ fullurl = ("%s%s/api/v2/status/temperature" % (protocol, self.get_option('cpm_url')))
+ elif (term == 'firmware'):
+ fullurl = ("%s%s/api/v2/status/firmware" % (protocol, self.get_option('cpm_url')))
+ elif (term == 'status'):
+ fullurl = ("%s%s/api/v2/status/status" % (protocol, self.get_option('cpm_url')))
+ elif (term == 'alarms'):
+ fullurl = ("%s%s/api/v2/status/alarms" % (protocol, self.get_option('cpm_url')))
+ else:
+ raise AnsibleError("Status command not recognized %s " % (term))
+
+ try:
+ response = open_url(fullurl, validate_certs=self.get_option('validate_certs'), use_proxy=self.get_option('use_proxy'),
+ headers={'Content-Type': 'application/json', 'Authorization': "Basic %s" % auth})
+ except HTTPError as e:
+ raise AnsibleError("Received HTTP error for %s : %s" % (fullurl, to_native(e)))
+ except URLError as e:
+ raise AnsibleError("Failed lookup url for %s : %s" % (fullurl, to_native(e)))
+ except SSLValidationError as e:
+ raise AnsibleError("Error validating the server's certificate for %s: %s" % (fullurl, to_native(e)))
+ except ConnectionError as e:
+ raise AnsibleError("Error connecting to %s: %s" % (fullurl, to_native(e)))
+
+ ret.append(to_text(response.read()))
+
+ return ret
diff --git a/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_alarm_info.py b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_alarm_info.py
new file mode 100644
index 00000000..a1f18e1a
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_alarm_info.py
@@ -0,0 +1,179 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# (C) 2019 Red Hat Inc.
+# Copyright (C) 2019 Western Telematic Inc.
+#
+# GNU General Public License v3.0+
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+#
+# Module to retrieve WTI alarm information from WTI OOB and PDU devices.
+# CPM remote_management
+#
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+ANSIBLE_METADATA = {
+ 'metadata_version': '1.1',
+ 'status': ['preview'],
+ 'supported_by': 'community'
+}
+
+DOCUMENTATION = """
+---
+module: cpm_alarm_info
+version_added: "2.9"
+author:
+ - "Western Telematic Inc. (@wtinetworkgear)"
+short_description: Get alarm information from WTI OOB and PDU devices
+description:
+ - "Get temperature alarm from WTI OOB and PDU devices"
+options:
+ cpm_url:
+ description:
+ - This is the URL of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_username:
+ description:
+ - This is the Username of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_password:
+ description:
+ - This is the Password of the WTI device to send the module.
+ type: str
+ required: true
+ use_https:
+ description:
+ - Designates to use an https connection or http connection.
+ type: bool
+ required: false
+ default: true
+ validate_certs:
+ description:
+ - If false, SSL certificates will not be validated. This should only be used
+ - on personally controlled sites using self-signed certificates.
+ type: bool
+ required: false
+ default: true
+ use_proxy:
+ description:
+ - Flag to control if the lookup will observe HTTP proxy environment variables when present.
+ type: bool
+ required: false
+ default: false
+notes:
+ - Use C(groups/cpm) in C(module_defaults) to set common options used between CPM modules.)
+"""
+
+EXAMPLES = """
+- name: Get the Alarm Information for a WTI device
+ cpm_alarm_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+
+- name: Get the Alarm Information for a WTI device
+ cpm_alarm_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: false
+ validate_certs: false
+"""
+
+RETURN = """
+data:
+ description: The output JSON returned from the commands sent
+ returned: always
+ type: complex
+ contains:
+ alarms:
+ description: Current alarm status of the WTI device after module execution.
+ returned: success
+ type: dict
+ sample: [ {"name": "OVER CURRENT (INITIAL)","status": "0"},
+ {"name": "OVER CURRENT (CRITICAL)","status": "0"},
+ {"name": "OVER TEMPERATURE (INITIAL)","status": "0"} ]
+ status:
+ description: Return status after module completion
+ returned: always
+ type: dict
+ sample: { "code": "0", "text": "OK" }
+"""
+
+import base64
+import json
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
+from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
+
+
+def run_module():
+ # define the available arguments/parameters that a user can pass to
+ # the module
+ module_args = dict(
+ cpm_url=dict(type='str', required=True),
+ cpm_username=dict(type='str', required=True),
+ cpm_password=dict(type='str', required=True, no_log=True),
+ use_https=dict(type='bool', default=True),
+ validate_certs=dict(type='bool', default=True),
+ use_proxy=dict(type='bool', default=False)
+ )
+
+ result = dict(
+ changed=False,
+ data=''
+ )
+
+ module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)
+
+ auth = to_text(base64.b64encode(to_bytes('{0}:{1}'.format(to_native(module.params['cpm_username']), to_native(module.params['cpm_password'])),
+ errors='surrogate_or_strict')))
+
+ if module.params['use_https'] is True:
+ protocol = "https://"
+ else:
+ protocol = "http://"
+
+ fullurl = ("%s%s/api/v2/status/alarms" % (protocol, to_native(module.params['cpm_url'])))
+
+ try:
+ response = open_url(fullurl, data=None, method='GET', validate_certs=module.params['validate_certs'], use_proxy=module.params['use_proxy'],
+ headers={'Content-Type': 'application/json', 'Authorization': "Basic %s" % auth})
+
+ except HTTPError as e:
+ fail_json = dict(msg='GET: Received HTTP error for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except URLError as e:
+ fail_json = dict(msg='GET: Failed lookup url for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except SSLValidationError as e:
+ fail_json = dict(msg='GET: Error validating the server''s certificate for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except ConnectionError as e:
+ fail_json = dict(msg='GET: Error connecting to {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+
+ result['data'] = json.loads(response.read())
+
+ module.exit_json(**result)
+
+
+def main():
+ run_module()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_config_backup.py b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_config_backup.py
new file mode 100644
index 00000000..c206d69d
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_config_backup.py
@@ -0,0 +1,204 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# (C) 2019 Red Hat Inc.
+# Copyright (C) 2020 Western Telematic Inc.
+#
+# GNU General Public License v3.0+
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+#
+# Module to retrieve WTI Parameters from WTI OOB and PDU devices.
+# CPM remote_management
+#
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+ANSIBLE_METADATA = {
+ 'metadata_version': '1.1',
+ 'status': ['preview'],
+ 'supported_by': 'community'
+}
+
+DOCUMENTATION = """
+---
+module: cpm_config_backup
+version_added: "2.9"
+author: "Western Telematic Inc. (@wtinetworkgear)"
+short_description: Get parameters from WTI OOB and PDU devices
+description:
+ - "Get parameters from WTI OOB and PDU devices"
+options:
+ cpm_url:
+ description:
+ - This is the URL of the WTI device to get the parameters from.
+ type: str
+ required: true
+ cpm_username:
+ description:
+ - This is the Username of the WTI device to get the parameters from.
+ type: str
+ required: true
+ cpm_password:
+ description:
+ - This is the Password of the WTI device to get the parameters from.
+ type: str
+ required: true
+ cpm_path:
+ description:
+ - This is the directory path to store the WTI device configuration file.
+ type: str
+ required: false
+ default: "/tmp/"
+ use_https:
+ description:
+ - Designates to use an https connection or http connection.
+ type: bool
+ required: false
+ default: true
+ validate_certs:
+ description:
+ - If false, SSL certificates will not be validated. This should only be used
+ - on personally controlled sites using self-signed certificates.
+ type: bool
+ required: false
+ default: true
+ use_proxy:
+ description: Flag to control if the lookup will observe HTTP proxy environment variables when present.
+ type: bool
+ required: false
+ default: false
+notes:
+ - Use C(groups/cpm) in C(module_defaults) to set common options used between CPM modules.)
+"""
+
+EXAMPLES = """
+- name: Get the Parameters for a WTI device
+ cpm_config_backup:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+"""
+
+RETURN = """
+data:
+ description: The XML configuration of the WTI device queried
+ returned: always
+ type: complex
+ contains:
+ status:
+ description: List of status returns from backup operation
+ returned: success
+ type: list
+ sample:
+ - code: 0
+ savedfilename: "/tmp/wti-192-10-10-239-2020-02-13T16-05-57.xml"
+ text: "ok"
+"""
+
+import base64
+import json
+import datetime
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
+from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
+
+
+def get_unit_type(filedata):
+ beginsearch = filedata.find("unit_type_info=\"")
+ beginsearch = (beginsearch + 16)
+ endsearch = filedata.find("\">", beginsearch)
+ if (((endsearch == -1) | (beginsearch == -1)) | (endsearch < beginsearch) | ((endsearch - beginsearch) > 16)):
+ header = "wti"
+ else:
+ header = filedata[beginsearch:beginsearch + (endsearch - beginsearch)]
+ return (header)
+
+
+def normalize_string(filedata):
+ filedata = filedata.replace(":", "-")
+ filedata = filedata.replace(".", "-")
+ return (filedata)
+
+
+def run_module():
+ # define the available arguments/parameters that a user can pass to
+ # the module
+ module_args = dict(
+ cpm_url=dict(type='str', required=True),
+ cpm_username=dict(type='str', required=True),
+ cpm_password=dict(type='str', required=True, no_log=True),
+ cpm_path=dict(type='str', default="/tmp/"),
+ use_https=dict(type='bool', default=True),
+ validate_certs=dict(type='bool', default=True),
+ use_proxy=dict(type='bool', default=False)
+ )
+
+ result = dict(
+ changed=False,
+ data=''
+ )
+
+ module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)
+
+ auth = to_text(base64.b64encode(to_bytes('{0}:{1}'.format(to_native(module.params['cpm_username']), to_native(module.params['cpm_password'])),
+ errors='surrogate_or_strict')))
+
+ if module.params['use_https'] is True:
+ protocol = "https://"
+ else:
+ protocol = "http://"
+
+ fullurl = ("%s%s/cgi-bin/gethtml?formWTIDownloadConfigXML.html" % (protocol, to_native(module.params['cpm_url'])))
+
+ try:
+ response = open_url(fullurl, data=None, method='GET', validate_certs=module.params['validate_certs'], use_proxy=module.params['use_proxy'],
+ headers={'Content-Type': 'application/xml', 'Authorization': "Basic %s" % auth})
+
+ except HTTPError as e:
+ fail_json = dict(msg='GET: Received HTTP error for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except URLError as e:
+ fail_json = dict(msg='GET: Failed lookup url for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except SSLValidationError as e:
+ fail_json = dict(msg='GET: Error validating the server''s certificate for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except ConnectionError as e:
+ fail_json = dict(msg='GET: Error connecting to {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+
+ json_string = response.read()
+
+ try:
+ f = open(normalize_string(to_native(module.params['cpm_path'])) + get_unit_type(to_native(json_string)) + "-" + to_native(module.params['cpm_url']) +
+ "-" + datetime.datetime.now().replace(microsecond=0).isoformat() + ".xml", "wb")
+ f.write(json_string)
+ f.close()
+ json_string = '{\"status\": { \"code\": \"0\", \"text\": \"ok\", \"savedfilename\": \"%s%s-%s-%s.xml\" }}' \
+ % (normalize_string(to_native(module.params['cpm_path'])), get_unit_type(to_native(json_string)),
+ to_native(module.params['cpm_url']), datetime.datetime.now().replace(microsecond=0).isoformat())
+
+ except Exception as e:
+ json_string = "{\"status\": { \"code\": \"1\", \"text\": \"error: " + str(e) + "\", \"savedfilename\": \"\" }}"
+
+ result['data'] = json_string
+
+ module.exit_json(**result)
+
+
+def main():
+ run_module()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_config_restore.py b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_config_restore.py
new file mode 100644
index 00000000..7b028da6
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_config_restore.py
@@ -0,0 +1,208 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# (C) 2019 Red Hat Inc.
+# Copyright (C) 2020 Western Telematic Inc.
+#
+# GNU General Public License v3.0+
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+#
+# Module to retrieve WTI Parameters from WTI OOB and PDU devices.
+# CPM remote_management
+#
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+ANSIBLE_METADATA = {
+ 'metadata_version': '1.1',
+ 'status': ['preview'],
+ 'supported_by': 'community'
+}
+
+DOCUMENTATION = """
+---
+module: cpm_config_restore
+version_added: "2.9"
+author: "Western Telematic Inc. (@wtinetworkgear)"
+short_description: Get parameters from WTI OOB and PDU devices
+description:
+ - "Get parameters from WTI OOB and PDU devices"
+options:
+ cpm_url:
+ description:
+ - This is the URL of the WTI device to get the parameters from.
+ type: str
+ required: true
+ cpm_username:
+ description:
+ - This is the Username of the WTI device to get the parameters from.
+ type: str
+ required: true
+ cpm_password:
+ description:
+ - This is the Password of the WTI device to get the parameters from.
+ type: str
+ required: true
+ cpm_path:
+ description:
+ - This is the directory path to the existing the WTI device configuration file.
+ type: str
+ required: false
+ default: "/tmp/"
+ cpm_filename:
+ description:
+ - This is the filename of the existing WTI device configuration file.
+ type: str
+ required: true
+ use_https:
+ description:
+ - Designates to use an https connection or http connection.
+ type: bool
+ required: false
+ default: true
+ validate_certs:
+ description:
+ - If false, SSL certificates will not be validated. This should only be used
+ - on personally controlled sites using self-signed certificates.
+ type: bool
+ required: false
+ default: true
+ use_proxy:
+ description: Flag to control if the lookup will observe HTTP proxy environment variables when present.
+ type: bool
+ required: false
+ default: false
+notes:
+ - Use C(groups/cpm) in C(module_defaults) to set common options used between CPM modules.)
+"""
+
+EXAMPLES = """
+- name: Get the Parameters for a WTI device
+ cpm_config_restore:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ cpm_path: "/tmp/"
+ cpm_filename: "wti-192-10-10-239-2020-02-13T16-05-57-xml"
+ use_https: true
+ validate_certs: false
+"""
+
+RETURN = """
+data:
+ description: The output XML configuration of the WTI device queried
+ returned: always
+ type: complex
+ contains:
+ filelength:
+ description: Length of the file uploaded in bytes
+ returned: success
+ type: int
+ sample:
+ - filelength: 329439
+ status:
+ description: List of status returns from backup operation
+ returned: success
+ type: list
+ sample:
+ - code: 0
+ text: "ok"
+ unittimestamp: "2020-02-14T00:18:57+00:00"
+"""
+
+import base64
+import json
+import datetime
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
+from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
+
+
+def get_unit_type(filedata):
+ beginsearch = filedata.find("unit_type_info=\"")
+ beginsearch = (beginsearch + 16)
+ endsearch = filedata.find("\">", beginsearch)
+ if (((endsearch == -1) | (beginsearch == -1)) | (endsearch < beginsearch) | ((endsearch - beginsearch) > 16)):
+ header = "wti"
+ else:
+ header = filedata[beginsearch:beginsearch + (endsearch - beginsearch)]
+ return (header)
+
+
+def run_module():
+ # define the available arguments/parameters that a user can pass to
+ # the module
+ module_args = dict(
+ cpm_url=dict(type='str', required=True),
+ cpm_username=dict(type='str', required=True),
+ cpm_password=dict(type='str', required=True, no_log=True),
+ cpm_path=dict(type='str', default="/tmp/"),
+ cpm_filename=dict(type='str', required=True),
+ use_https=dict(type='bool', default=True),
+ validate_certs=dict(type='bool', default=True),
+ use_proxy=dict(type='bool', default=False)
+ )
+
+ result = dict(
+ changed=False,
+ data=''
+ )
+
+ module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)
+
+ try:
+ f = open(to_native(module.params['cpm_path']) + to_native(module.params['cpm_filename']), "rb")
+ cszData = f.read()
+ f.close()
+ except Exception as e:
+ json_string = "{\"status\": { \"code\": \"1\", \"text\": \"error: " + str(e) + "\" }}"
+ result['data'] = json_string
+ module.exit_json(**result)
+
+ auth = to_text(base64.b64encode(to_bytes('{0}:{1}'.format(to_native(module.params['cpm_username']), to_native(module.params['cpm_password'])),
+ errors='surrogate_or_strict')))
+
+ if module.params['use_https'] is True:
+ protocol = "https://"
+ else:
+ protocol = "http://"
+
+ fullurl = ("%s%s/cgi-bin/getfile" % (protocol, to_native(module.params['cpm_url'])))
+
+ try:
+ xmlfile = open(to_native(module.params['cpm_path']) + to_native(module.params['cpm_filename']), 'rb')
+ xmlfile.close()
+ response = open_url(fullurl, data=cszData, method='POST', validate_certs=module.params['validate_certs'], use_proxy=module.params['use_proxy'],
+ headers={'Content-Type': 'application/xml', 'Authorization': "Basic %s" % auth})
+
+ except HTTPError as e:
+ fail_json = dict(msg='GET: Received HTTP error for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except URLError as e:
+ fail_json = dict(msg='GET: Failed lookup url for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except SSLValidationError as e:
+ fail_json = dict(msg='GET: Error validating the server''s certificate for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except ConnectionError as e:
+ fail_json = dict(msg='GET: Error connecting to {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+
+ result['data'] = response.read()
+ module.exit_json(**result)
+
+
+def main():
+ run_module()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_current_info.py b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_current_info.py
new file mode 100644
index 00000000..a068cd0b
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_current_info.py
@@ -0,0 +1,241 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# (C) 2019 Red Hat Inc.
+# Copyright (C) 2019 Western Telematic Inc.
+#
+# GNU General Public License v3.0+
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+#
+# Module to retrieve WTI Current information from WTI OOB and PDU devices.
+# CPM remote_management
+#
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+ANSIBLE_METADATA = {
+ 'metadata_version': '1.1',
+ 'status': ['preview'],
+ 'supported_by': 'community'
+}
+
+DOCUMENTATION = """
+---
+module: cpm_current_info
+version_added: "2.9"
+author:
+ - "Western Telematic Inc. (@wtinetworkgear)"
+short_description: Get the Current Information of a WTI device
+description:
+ - "Get the Current Information of a WTI device"
+options:
+ cpm_url:
+ description:
+ - This is the URL of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_username:
+ description:
+ - This is the Username of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_password:
+ description:
+ - This is the Password of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_startdate:
+ description:
+ - Start date of the range to look for current data
+ type: str
+ required: false
+ cpm_enddate:
+ description:
+ - End date of the range to look for current data
+ type: str
+ required: false
+ use_https:
+ description:
+ - Designates to use an https connection or http connection.
+ type: bool
+ required: false
+ default: true
+ validate_certs:
+ description:
+ - If false, SSL certificates will not be validated. This should only be used
+ - on personally controlled sites using self-signed certificates.
+ type: bool
+ required: false
+ default: true
+ use_proxy:
+ description:
+ - Flag to control if the lookup will observe HTTP proxy environment variables when present.
+ type: bool
+ required: false
+ default: false
+notes:
+ - Use C(groups/cpm) in C(module_defaults) to set common options used between CPM modules.)
+"""
+
+EXAMPLES = """
+- name: Get the Current Information of a WTI device
+ cpm_current_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+
+- name: Get the Current Information of a WTI device
+ cpm_current_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: false
+ validate_certs: false
+ startdate: 01-12-2020"
+ enddate: 02-16-2020"
+"""
+
+RETURN = """
+data:
+ description: The output JSON returned from the commands sent
+ returned: always
+ type: complex
+ contains:
+ timestamp:
+ description: Current timestamp of the WTI device after module execution.
+ returned: success
+ type: str
+ sample: "2020-02-24T20:54:03+00:00"
+ powerunit:
+ description: Identifies if the WTI device is a power type device.
+ returned: success
+ type: str
+ sample: "1"
+ outletmetering:
+ description: Identifies if the WTI device has Poiwer Outlet metering.
+ returned: success
+ type: str
+ sample: "1"
+ ats:
+ description: Identifies if the WTI device is an ATS type of power device.
+ returned: success
+ type: str
+ sample: "1"
+ plugcount:
+ description: Current outlet plug count of the WTI device after module execution.
+ returned: success
+ type: str
+ sample: "8"
+ powerfactor:
+ description: Power factor of the WTI device after module execution.
+ returned: success
+ type: str
+ sample: "100"
+ powereff:
+ description: Power efficiency of the WTI device after module execution.
+ returned: success
+ type: str
+ sample: "100"
+ powerdatacount:
+ description: Total powerdata samples returned after module execution.
+ returned: success
+ type: str
+ sample: "1"
+ powerdata:
+ description: Power data of the WTI device after module execution.
+ returned: success
+ type: dict
+ sample: [ { "timestamp": "2020-02-24T23:29:31+00:00","temperature": "90","format": "F",
+ "branch1": [{ "voltage1": "118.00","current1": "0.00"}] }]
+ status:
+ description: Return status after module completion
+ returned: always
+ type: dict
+ sample: { "code": "0", "text": "OK" }
+"""
+
+import base64
+import json
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
+from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
+
+
+def run_module():
+ # define the available arguments/parameters that a user can pass to
+ # the module
+ module_args = dict(
+ cpm_url=dict(type='str', required=True),
+ cpm_username=dict(type='str', required=True),
+ cpm_password=dict(type='str', required=True, no_log=True),
+ cpm_startdate=dict(type='str', required=False),
+ cpm_enddate=dict(type='str', required=False),
+ use_https=dict(type='bool', default=True),
+ validate_certs=dict(type='bool', default=True),
+ use_proxy=dict(type='bool', default=False)
+ )
+
+ result = dict(
+ changed=False,
+ data=''
+ )
+
+ module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)
+
+ auth = to_text(base64.b64encode(to_bytes('{0}:{1}'.format(to_native(module.params['cpm_username']), to_native(module.params['cpm_password'])),
+ errors='surrogate_or_strict')))
+
+ if module.params['use_https'] is True:
+ protocol = "https://"
+ else:
+ protocol = "http://"
+
+ additional = ""
+
+ if module.params['cpm_startdate'] is not None and (len(to_native(module.params['cpm_startdate'])) > 0):
+ if module.params['cpm_enddate'] is not None and (len(to_native(module.params['cpm_enddate'])) > 0):
+ additional = "?startdate=%s&enddate=%s" % (to_native(module.params['cpm_startdate']), to_native(module.params['cpm_enddate']))
+
+ fullurl = ("%s%s/api/v2/status/current" % (protocol, to_native(module.params['cpm_url'])))
+
+ if (len(additional) > 0):
+ fullurl += additional
+
+ try:
+ response = open_url(fullurl, data=None, method='GET', validate_certs=module.params['validate_certs'], use_proxy=module.params['use_proxy'],
+ headers={'Content-Type': 'application/json', 'Authorization': "Basic %s" % auth})
+
+ except HTTPError as e:
+ fail_json = dict(msg='GET: Received HTTP error for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except URLError as e:
+ fail_json = dict(msg='GET: Failed lookup url for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except SSLValidationError as e:
+ fail_json = dict(msg='GET: Error validating the server''s certificate for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except ConnectionError as e:
+ fail_json = dict(msg='GET: Error connecting to {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+
+ result['data'] = json.loads(response.read())
+
+ module.exit_json(**result)
+
+
+def main():
+ run_module()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_firmware_info.py b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_firmware_info.py
new file mode 100644
index 00000000..0f53affe
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_firmware_info.py
@@ -0,0 +1,187 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# (C) 2019 Red Hat Inc.
+# Copyright (C) 2019 Western Telematic Inc.
+#
+# GNU General Public License v3.0+
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+#
+# Module to retrieve WTI firmware information from WTI OOB and PDU devices.
+# CPM remote_management
+#
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+ANSIBLE_METADATA = {
+ 'metadata_version': '1.1',
+ 'status': ['preview'],
+ 'supported_by': 'community'
+}
+
+DOCUMENTATION = """
+---
+module: cpm_firmware_info
+version_added: "2.9"
+author:
+ - "Western Telematic Inc. (@wtinetworkgear)"
+short_description: Get firmware information from WTI OOB and PDU devices
+description:
+ - "Get firmware information from WTI OOB and PDU devices"
+options:
+ cpm_url:
+ description:
+ - This is the URL of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_username:
+ description:
+ - This is the Username of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_password:
+ description:
+ - This is the Password of the WTI device to send the module.
+ type: str
+ required: true
+ use_https:
+ description:
+ - Designates to use an https connection or http connection.
+ type: bool
+ required: false
+ default: true
+ validate_certs:
+ description:
+ - If false, SSL certificates will not be validated. This should only be used
+ - on personally controlled sites using self-signed certificates.
+ type: bool
+ required: false
+ default: true
+ use_proxy:
+ description:
+ - Flag to control if the lookup will observe HTTP proxy environment variables when present.
+ type: bool
+ required: false
+ default: false
+notes:
+ - Use C(groups/cpm) in C(module_defaults) to set common options used between CPM modules.)
+"""
+
+EXAMPLES = """
+- name: Get the Firmware Information for a WTI device
+ cpm_firmware_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+
+- name: Get the Firmware Information for a WTI device
+ cpm_firmware_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: false
+ validate_certs: false
+"""
+
+RETURN = """
+data:
+ description: The output JSON returned from the commands sent
+ returned: always
+ type: complex
+ contains:
+ firmware:
+ description: Current Firmware version of the WTI device.
+ returned: success
+ type: str
+ sample: "6.60"
+ family:
+ description: Current family type (Console = 1 or Power = 0) of the WTI device.
+ returned: success
+ type: str
+ sample: "1"
+ fips:
+ description: If WTI device is a no FIPS only device.
+ returned: success
+ type: str
+ sample: "2020-02-24T20:54:03+00:00"
+ status:
+ description: Return status after module completion
+ returned: always
+ type: dict
+ sample: { "code": "0", "text": "OK" }
+"""
+
+import base64
+import json
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
+from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
+
+
+def run_module():
+ # define the available arguments/parameters that a user can pass to
+ # the module
+ module_args = dict(
+ cpm_url=dict(type='str', required=True),
+ cpm_username=dict(type='str', required=True),
+ cpm_password=dict(type='str', required=True, no_log=True),
+ use_https=dict(type='bool', default=True),
+ validate_certs=dict(type='bool', default=True),
+ use_proxy=dict(type='bool', default=False)
+ )
+
+ result = dict(
+ changed=False,
+ data=''
+ )
+
+ module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)
+
+ auth = to_text(base64.b64encode(to_bytes('{0}:{1}'.format(to_native(module.params['cpm_username']), to_native(module.params['cpm_password'])),
+ errors='surrogate_or_strict')))
+
+ if module.params['use_https'] is True:
+ protocol = "https://"
+ else:
+ protocol = "http://"
+
+ fullurl = ("%s%s/api/v2/status/firmware" % (protocol, to_native(module.params['cpm_url'])))
+
+ try:
+ response = open_url(fullurl, data=None, method='GET', validate_certs=module.params['validate_certs'], use_proxy=module.params['use_proxy'],
+ headers={'Content-Type': 'application/json', 'Authorization': "Basic %s" % auth})
+
+ except HTTPError as e:
+ fail_json = dict(msg='GET: Received HTTP error for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except URLError as e:
+ fail_json = dict(msg='GET: Failed lookup url for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except SSLValidationError as e:
+ fail_json = dict(msg='GET: Error validating the server''s certificate for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except ConnectionError as e:
+ fail_json = dict(msg='GET: Error connecting to {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+
+ result['data'] = json.loads(response.read())
+
+ module.exit_json(**result)
+
+
+def main():
+ run_module()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_interface_config.py b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_interface_config.py
new file mode 100644
index 00000000..8b86664d
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_interface_config.py
@@ -0,0 +1,509 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# (C) 2019 Red Hat Inc.
+# Copyright (C) 2019 Western Telematic Inc.
+#
+# GNU General Public License v3.0+
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+#
+# Module to execute WTI network interface Parameters on WTI OOB and PDU devices.
+# CPM remote_management
+#
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+ANSIBLE_METADATA = {
+ 'metadata_version': '1.1',
+ 'status': ['preview'],
+ 'supported_by': 'community'
+}
+
+DOCUMENTATION = """
+---
+module: cpm_interface_config
+version_added: "2.10"
+author:
+ - "Western Telematic Inc. (@wtinetworkgear)"
+short_description: Set network interface parameters in WTI OOB and PDU devices
+description:
+ - "Set network interface parameters in WTI OOB and PDU devices"
+options:
+ cpm_url:
+ description:
+ - This is the URL of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_username:
+ description:
+ - This is the Username of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_password:
+ description:
+ - This is the Password of the WTI device to send the module.
+ type: str
+ required: true
+ use_https:
+ description:
+ - Designates to use an https connection or http connection.
+ type: bool
+ required: false
+ default: true
+ validate_certs:
+ description:
+ - If false, SSL certificates will not be validated. This should only be used
+ - on personally controlled sites using self-signed certificates.
+ type: bool
+ required: false
+ default: true
+ use_proxy:
+ description:
+ - Flag to control if the lookup will observe HTTP proxy environment variables when present.
+ type: bool
+ required: false
+ default: false
+ interface:
+ description:
+ - This is the ethernet port name that is getting configured.
+ type: str
+ required: false
+ choices: [ "eth0", "eth1" ]
+ negotiation:
+ description:
+ - This is the speed of the interface port being configured.
+ - 0=Auto, 1=10/half, 2=10/full, 3=100/half, 4=100/full, 5=1000/half, 6=1000/full
+ type: int
+ required: false
+ choices: [ 0, 1, 2, 3, 4, 5, 6 ]
+ ipv4address:
+ description:
+ - IPv4 format IP address for the defined interface Port.
+ type: str
+ required: false
+ ipv4netmask:
+ description:
+ - IPv4 format Netmask for the defined interface Port.
+ type: str
+ required: false
+ ipv4gateway:
+ description:
+ - IPv4 format Gateway address for the defined interface Port.
+ type: str
+ required: false
+ ipv4dhcpenable:
+ description:
+ - Enable IPv4 DHCP request call to obtain confufuration information.
+ type: int
+ required: false
+ choices: [ 0, 1 ]
+ ipv4dhcphostname:
+ description:
+ - Define IPv4 DHCP Hostname.
+ type: str
+ required: false
+ ipv4dhcplease:
+ description:
+ - IPv4 DHCP Lease Time.
+ type: int
+ required: false
+ ipv4dhcpobdns:
+ description:
+ - IPv6 DHCP Obtain DNS addresses auto.
+ type: int
+ required: false
+ choices: [ 0, 1 ]
+ ipv4dhcpupdns:
+ description:
+ - IPv4 DHCP DNS Server Update.
+ type: int
+ required: false
+ choices: [ 0, 1 ]
+ ipv4dhcpdefgateway:
+ description:
+ - Enable or Disable this ports configuration as the default IPv4 route for the device.
+ type: int
+ required: false
+ choices: [ 0, 1 ]
+ ipv6address:
+ description:
+ - IPv6 format IP address for the defined interface Port.
+ type: str
+ required: false
+ ipv6subnetprefix:
+ description:
+ - IPv6 format Subnet Prefix for the defined interface Port.
+ type: str
+ required: false
+ ipv6gateway:
+ description:
+ - IPv6 format Gateway address for the defined interface Port.
+ type: str
+ required: false
+notes:
+ - Use C(groups/cpm) in C(module_defaults) to set common options used between CPM modules.
+"""
+
+EXAMPLES = """
+# Set Network Interface Parameters
+- name: Set the Interface Parameters for port eth1 of a WTI device
+ cpm_interface_config:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+ interface: "eth1"
+ ipv4address: "192.168.0.14"
+ ipv4netmask: "255.255.255.0"
+ ipv4gateway: "192.168.0.1"
+ negotiation: 0
+
+# Set Network Interface Parameters
+- name: Set the Interface Parameters for port eth1 to DHCP of a WTI device
+ cpm_interface_config:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+ interface: "eth1"
+ negotiation: 0
+ ipv4dhcpenable: 1
+ ipv4dhcphostname: ""
+ ipv4dhcplease: -1
+ ipv4dhcpobdns: 0
+ ipv4dhcpupdns: 0
+ ipv4dhcpdefgateway: 0
+"""
+
+RETURN = """
+data:
+ description: The output JSON returned from the commands sent
+ returned: always
+ type: complex
+ contains:
+ totalports:
+ description: Total interface ports requested of the WTI device.
+ returned: success
+ type: int
+ sample: 1
+ interface:
+ description: Current k/v pairs of interface info for the WTI device after module execution.
+ returned: always
+ type: dict
+ sample: {"name": "eth1", "type": "0", "mac_address": "00-09-9b-02-45-db", "is_up": "0", "is_gig": "1", "speed": "10", "negotiation": "0",
+ "ietf-ipv4": {"address": [{"ip": "10.10.10.2","netmask": "255.255.255.0","gateway": ""}],
+ "dhcpclient": [{"enable": 0, "hostname": "", "lease": -1, "obdns": 1, "updns": 1}]},
+ "ietf-ipv6": {"address": [{"ip": "", "netmask": "", "gateway": "" }]}}
+"""
+
+import base64
+import json
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
+from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
+
+
+def assemble_json(cpmmodule, existing_interface):
+ total_change = protocol = 0
+ json_load = ietfstring = negotiation = None
+
+ address = []
+ netmask = []
+ gateway = []
+ dhcphostname = []
+ dhcpenable = []
+ dhcplease = []
+ dhcpobdns = []
+ dhcpupdns = []
+ dhcpdefgateway = []
+
+ for x in range(0, 2):
+ address.insert(x, None)
+ netmask.insert(x, None)
+ gateway.insert(x, None)
+ dhcpenable.insert(x, None)
+ dhcphostname.insert(x, None)
+ dhcplease.insert(x, None)
+ dhcpobdns.insert(x, None)
+ dhcpupdns.insert(x, None)
+ dhcpdefgateway.insert(x, None)
+
+ if existing_interface["totalports"] is not None:
+ if (existing_interface["totalports"] != 1):
+ return None
+
+ # make sure we are working with the correct ethernet port
+ if (existing_interface["interface"][0]["name"] != to_native(cpmmodule.params["interface"])):
+ return None
+
+ if cpmmodule.params["negotiation"] is not None:
+ if (int(existing_interface["interface"][0]["negotiation"]) != cpmmodule.params["negotiation"]):
+ total_change = (total_change | 1)
+ negotiation = to_native(cpmmodule.params["negotiation"])
+
+ if cpmmodule.params["ipv4address"] is not None:
+ if (existing_interface["interface"][0]["ietf-ipv4"]["address"][0]["ip"] != cpmmodule.params["ipv4address"]):
+ total_change = (total_change | 2)
+ address.insert(protocol, to_native(cpmmodule.params["ipv4address"]))
+
+ if cpmmodule.params["ipv4netmask"] is not None:
+ if (existing_interface["interface"][0]["ietf-ipv4"]["address"][0]["netmask"] != cpmmodule.params["ipv4netmask"]):
+ total_change = (total_change | 4)
+ netmask.insert(protocol, to_native(cpmmodule.params["ipv4netmask"]))
+
+ if cpmmodule.params["ipv4gateway"] is not None:
+ if (existing_interface["interface"][0]["ietf-ipv4"]["address"][0]["gateway"] != cpmmodule.params["ipv4gateway"]):
+ total_change = (total_change | 8)
+ gateway.insert(protocol, to_native(cpmmodule.params["ipv4gateway"]))
+
+ if cpmmodule.params["ipv4dhcpenable"] is not None:
+ if (int(existing_interface["interface"][0]["ietf-ipv4"]["dhcpclient"][0]["enable"]) != cpmmodule.params["ipv4dhcpenable"]):
+ total_change = (total_change | 16)
+ dhcpenable.insert(protocol, to_native(cpmmodule.params["ipv4dhcpenable"]))
+
+ if cpmmodule.params["ipv4dhcphostname"] is not None:
+ if (existing_interface["interface"][0]["ietf-ipv4"]["dhcpclient"][0]["hostname"] != cpmmodule.params["ipv4dhcphostname"]):
+ total_change = (total_change | 32)
+ dhcphostname.insert(protocol, to_native(cpmmodule.params["ipv4dhcphostname"]))
+
+ if cpmmodule.params["ipv4dhcplease"] is not None:
+ if (int(existing_interface["interface"][0]["ietf-ipv4"]["dhcpclient"][0]["lease"]) != cpmmodule.params["ipv4dhcplease"]):
+ total_change = (total_change | 64)
+ dhcplease.insert(protocol, to_native(cpmmodule.params["ipv4dhcplease"]))
+
+ if cpmmodule.params["ipv4dhcpobdns"] is not None:
+ if (int(existing_interface["interface"][0]["ietf-ipv4"]["dhcpclient"][0]["obdns"]) != cpmmodule.params["ipv4dhcpobdns"]):
+ total_change = (total_change | 128)
+ dhcpobdns.insert(protocol, to_native(cpmmodule.params["ipv4dhcpobdns"]))
+
+ if cpmmodule.params["ipv4dhcpupdns"] is not None:
+ if (int(existing_interface["interface"][0]["ietf-ipv4"]["dhcpclient"][0]["updns"]) != cpmmodule.params["ipv4dhcpupdns"]):
+ total_change = (total_change | 256)
+ dhcpupdns.insert(protocol, to_native(cpmmodule.params["ipv4dhcpupdns"]))
+
+ if cpmmodule.params["ipv4dhcpdefgateway"] is not None:
+ if (int(existing_interface["interface"][0]["ietf-ipv4"]["address"][0]["defgateway"]) != cpmmodule.params["ipv4dhcpdefgateway"]):
+ total_change = (total_change | 512)
+ dhcpdefgateway.insert(protocol, to_native(cpmmodule.params["ipv4dhcpdefgateway"]))
+
+ protocol += 1
+
+ if cpmmodule.params["ipv6address"] is not None:
+ if (existing_interface["interface"][0]["ietf-ipv6"]["address"][0]["ip"] != cpmmodule.params["ipv6address"]):
+ total_change = (total_change | 2)
+ address.insert(protocol, to_native(cpmmodule.params["ipv6address"]))
+
+ if cpmmodule.params["ipv6subnetprefix"] is not None:
+ if (existing_interface["interface"][0]["ietf-ipv6"]["address"][0]["netmask"] != cpmmodule.params["ipv6subnetprefix"]):
+ total_change = (total_change | 4)
+ netmask.insert(protocol, to_native(cpmmodule.params["ipv6subnetprefix"]))
+
+ if cpmmodule.params["ipv6gateway"] is not None:
+ if (existing_interface["interface"][0]["ietf-ipv6"]["address"][0]["gateway"] != cpmmodule.params["ipv6gateway"]):
+ total_change = (total_change | 8)
+ gateway.insert(protocol, to_native(cpmmodule.params["ipv6gateway"]))
+
+ if (total_change > 0):
+ protocol = protocolchanged = 0
+ json_load = '{"interface": [ { "name": "%s"' % (to_native(cpmmodule.params["interface"]))
+
+ if (negotiation is not None):
+ json_load = '%s,"negotiation": "%s"' % (json_load, negotiation)
+
+ for protocol in range(0, 2):
+ protocolchanged = 0
+ if ((address[protocol] is not None) or (netmask[protocol] is not None) or (gateway[protocol] is not None) or
+ (dhcpdefgateway[protocol] is not None)):
+ protocolchanged += 1
+ ietfstring = ""
+
+ if (address[protocol] is not None):
+ ietfstring = '%s"ip": "%s"' % (ietfstring, address[protocol])
+
+ if (netmask[protocol] is not None):
+ if (len(ietfstring) > 0):
+ ietfstring = '%s,' % (ietfstring)
+ ietfstring = '%s"netmask": "%s"' % (ietfstring, netmask[protocol])
+
+ if (gateway[protocol] is not None):
+ if (len(ietfstring) > 0):
+ ietfstring = '%s,' % (ietfstring)
+ ietfstring = '%s"gateway": "%s"' % (ietfstring, gateway[protocol])
+
+ if (dhcpdefgateway[protocol] is not None):
+ if (len(ietfstring) > 0):
+ ietfstring = '%s,' % (ietfstring)
+ ietfstring = '%s"defgateway": %s' % (ietfstring, dhcpdefgateway[protocol])
+
+ if (protocolchanged > 0):
+ if (protocol == 0):
+ json_load = '%s,"ietf-ipv4": { ' % (json_load)
+ else:
+ json_load = '%s,"ietf-ipv6": { ' % (json_load)
+
+ json_load = '%s"address": [ {' % (json_load)
+
+ json_load = '%s%s}]' % (json_load, ietfstring)
+
+ if ((dhcphostname[protocol] is not None) or (dhcpenable[protocol] is not None) or (dhcplease[protocol] is not None) or
+ (dhcpobdns[protocol] is not None) or (dhcpupdns[protocol] is not None)):
+ if (protocolchanged == 0):
+ if (protocol == 0):
+ json_load = '%s,"ietf-ipv4": { ' % (json_load)
+ else:
+ json_load = '%s,"ietf-ipv6": { ' % (json_load)
+ else:
+ json_load = '%s,' % (json_load)
+
+ protocolchanged += 1
+ ietfstring = ""
+ json_load = '%s"dhcpclient": [ {' % (json_load)
+
+ if (dhcpenable[protocol] is not None):
+ if (len(ietfstring) > 0):
+ ietfstring = '%s,' % (ietfstring)
+ ietfstring = '%s"enable": %s' % (ietfstring, dhcpenable[protocol])
+
+ if (dhcphostname[protocol] is not None):
+ if (len(ietfstring) > 0):
+ ietfstring = '%s,' % (ietfstring)
+ ietfstring = '%s"hostname": "%s"' % (ietfstring, dhcphostname[protocol])
+
+ if (dhcplease[protocol] is not None):
+ if (len(ietfstring) > 0):
+ ietfstring = '%s,' % (ietfstring)
+ ietfstring = '%s"lease": %s' % (ietfstring, dhcplease[protocol])
+
+ if (dhcpobdns[protocol] is not None):
+ if (len(ietfstring) > 0):
+ ietfstring = '%s,' % (ietfstring)
+ ietfstring = '%s"obdns": %s' % (ietfstring, dhcpobdns[protocol])
+
+ if (dhcpupdns[protocol] is not None):
+ if (len(ietfstring) > 0):
+ ietfstring = '%s,' % (ietfstring)
+ ietfstring = '%s"updns": %s' % (ietfstring, dhcpupdns[protocol])
+
+ # end of dhcpclient
+ json_load = '%s%s}]' % (json_load, ietfstring)
+
+ # end of ietf-ipv4
+ if (protocolchanged > 0):
+ json_load = '%s}' % (json_load)
+
+ # end of interface
+ json_load = '%s}]' % (json_load)
+ json_load = '%s}' % (json_load)
+ return json_load
+
+
+def run_module():
+ # define the available arguments/parameters that a user can pass to
+ # the module
+ module_args = dict(
+ cpm_url=dict(type='str', required=True),
+ cpm_username=dict(type='str', required=True),
+ cpm_password=dict(type='str', required=True, no_log=True),
+ interface=dict(type='str', default=None, choices=["eth0", "eth1"]),
+ negotiation=dict(type='int', required=False, default=None, choices=[0, 1, 2, 3, 4, 5, 6]),
+ ipv4address=dict(type='str', required=False, default=None),
+ ipv4netmask=dict(type='str', required=False, default=None),
+ ipv4gateway=dict(type='str', required=False, default=None),
+ ipv4dhcpenable=dict(type='int', required=False, default=None, choices=[0, 1]),
+ ipv4dhcphostname=dict(type='str', required=False, default=None),
+ ipv4dhcplease=dict(type='int', required=False, default=None),
+ ipv4dhcpobdns=dict(type='int', required=False, default=None, choices=[0, 1]),
+ ipv4dhcpupdns=dict(type='int', required=False, default=None, choices=[0, 1]),
+ ipv4dhcpdefgateway=dict(type='int', required=False, default=None, choices=[0, 1]),
+ ipv6address=dict(type='str', required=False, default=None),
+ ipv6subnetprefix=dict(type='str', required=False, default=None),
+ ipv6gateway=dict(type='str', required=False, default=None),
+ use_https=dict(type='bool', default=True),
+ validate_certs=dict(type='bool', default=True),
+ use_proxy=dict(type='bool', default=False)
+ )
+
+ result = dict(
+ changed=False,
+ data=''
+ )
+
+ module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)
+
+ auth = to_text(base64.b64encode(to_bytes('{0}:{1}'.format(to_native(module.params['cpm_username']), to_native(module.params['cpm_password'])),
+ errors='surrogate_or_strict')))
+
+ if module.params['use_https'] is True:
+ protocol = "https://"
+ else:
+ protocol = "http://"
+
+ fullurl = ("%s%s/api/v2/config/interface?ports=%s" % (protocol, to_native(module.params['cpm_url']), to_native(module.params['interface'])))
+ method = 'GET'
+ try:
+ response = open_url(fullurl, data=None, method=method, validate_certs=module.params['validate_certs'], use_proxy=module.params['use_proxy'],
+ headers={'Content-Type': 'application/json', 'Authorization': "Basic %s" % auth})
+
+ except HTTPError as e:
+ fail_json = dict(msg='GET: Received HTTP error for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except URLError as e:
+ fail_json = dict(msg='GET: Failed lookup url for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except SSLValidationError as e:
+ fail_json = dict(msg='GET: Error validating the server''s certificate for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except ConnectionError as e:
+ fail_json = dict(msg='GET: Error connecting to {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+
+ result['data'] = json.loads(response.read())
+ payload = assemble_json(module, result['data'])
+
+ if module.check_mode:
+ if payload is not None:
+ result['changed'] = True
+ else:
+ if payload is not None:
+ fullurl = ("%s%s/api/v2/config/interface?ports=%s" % (protocol, to_native(module.params['cpm_url']), to_native(module.params['interface'])))
+ method = 'POST'
+
+ try:
+ response = open_url(fullurl, data=payload, method=method, validate_certs=module.params['validate_certs'], use_proxy=module.params['use_proxy'],
+ headers={'Content-Type': 'application/json', 'Authorization': "Basic %s" % auth})
+
+ except HTTPError as e:
+ fail_json = dict(msg='POST: Received HTTP error for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except URLError as e:
+ fail_json = dict(msg='POST: Failed lookup url for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except SSLValidationError as e:
+ fail_json = dict(msg='POST: Error validating the server''s certificate for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except ConnectionError as e:
+ fail_json = dict(msg='POST: Error connecting to {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+
+ result['changed'] = True
+ result['data'] = json.loads(response.read())
+
+ module.exit_json(**result)
+
+
+def main():
+ run_module()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_interface_info.py b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_interface_info.py
new file mode 100644
index 00000000..c8c070eb
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_interface_info.py
@@ -0,0 +1,195 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# (C) 2019 Red Hat Inc.
+# Copyright (C) 2019 Western Telematic Inc.
+#
+# GNU General Public License v3.0+
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+#
+# Module to retrieve WTI Network Interface Parameters from WTI OOB and PDU devices.
+# CPM remote_management
+#
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+ANSIBLE_METADATA = {
+ 'metadata_version': '1.1',
+ 'status': ['preview'],
+ 'supported_by': 'community'
+}
+
+DOCUMENTATION = """
+---
+module: cpm_interface_info
+version_added: "2.10"
+author:
+ - "Western Telematic Inc. (@wtinetworkgear)"
+short_description: Get network interface parameters from WTI OOB and PDU devices
+description:
+ - "Get network interface parameters from WTI OOB and PDU devices"
+options:
+ cpm_url:
+ description:
+ - This is the URL of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_username:
+ description:
+ - This is the Username of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_password:
+ description:
+ - This is the Password of the WTI device to send the module.
+ type: str
+ required: true
+ use_https:
+ description:
+ - Designates to use an https connection or http connection.
+ type: bool
+ required: false
+ default: true
+ validate_certs:
+ description:
+ - If false, SSL certificates will not be validated. This should only be used
+ - on personally controlled sites using self-signed certificates.
+ type: bool
+ required: false
+ default: true
+ use_proxy:
+ description:
+ - Flag to control if the lookup will observe HTTP proxy environment variables when present.
+ type: bool
+ required: false
+ default: false
+ interface:
+ description:
+ - This is the ethernet port name that is getting retrieved. It can include a single ethernet
+ - port name, multiple ethernet port names separated by commas or not defined for all ports.
+ type: list
+ required: false
+ choices: [ "eth0", "eth1", "ppp0" ]
+notes:
+ - Use C(groups/cpm) in C(module_defaults) to set common options used between CPM modules.)
+"""
+
+EXAMPLES = """
+- name: Get the network interface Parameters for a WTI device for all interfaces
+ cpm_interface_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+
+- name: Get the network interface Parameters for a WTI device for a specific interface
+ cpm_interface_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ interface: "eth0,eth1"
+ use_https: false
+ validate_certs: false
+"""
+
+RETURN = """
+data:
+ description: The output JSON returned from the commands sent
+ returned: always
+ type: complex
+ contains:
+ totalports:
+ description: Total ethernet ports requested of the WTI device.
+ returned: success
+ type: int
+ sample: 1
+ interface:
+ description: Current k/v pairs of interface info for the WTI device after module execution.
+ returned: always
+ type: dict
+ sample: {"name": "eth1", "type": "0", "mac_address": "00-09-9b-02-45-db", "is_up": "0", "is_gig": "1", "speed": "10", "negotiation": "0",
+ "ietf-ipv4": {"address": [{"ip": "10.10.10.2","netmask": "255.255.255.0","gateway": ""}],
+ "dhcpclient": [{"enable": 0, "hostname": "", "lease": -1, "obdns": 1, "updns": 1}]},
+ "ietf-ipv6": {"address": [{"ip": "", "netmask": "", "gateway": "" }]}}
+"""
+
+import base64
+import json
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
+from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
+
+
+def run_module():
+ # define the available arguments/parameters that a user can pass to
+ # the module
+ module_args = dict(
+ cpm_url=dict(type='str', required=True),
+ cpm_username=dict(type='str', required=True),
+ cpm_password=dict(type='str', required=True, no_log=True),
+ interface=dict(type='list', element='str', default=None, choices=["eth0", "eth1", "ppp0"]),
+ use_https=dict(type='bool', default=True),
+ validate_certs=dict(type='bool', default=True),
+ use_proxy=dict(type='bool', default=False)
+ )
+
+ result = dict(
+ changed=False,
+ data=''
+ )
+
+ module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)
+
+ auth = to_text(base64.b64encode(to_bytes('{0}:{1}'.format(to_native(module.params['cpm_username']), to_native(module.params['cpm_password'])),
+ errors='surrogate_or_strict')))
+
+ if module.params['use_https'] is True:
+ protocol = "https://"
+ else:
+ protocol = "http://"
+
+ fullurl = ("%s%s/api/v2/config/interface" % (protocol, to_native(module.params['cpm_url'])))
+ ports = module.params['interface']
+
+ if (ports is not None):
+ if isinstance(ports, list):
+ ports = ','.join(to_native(x) for x in ports)
+ fullurl = ("%s?ports=%s" % (fullurl, ports))
+
+ try:
+ response = open_url(fullurl, data=None, method='GET', validate_certs=module.params['validate_certs'], use_proxy=module.params['use_proxy'],
+ headers={'Content-Type': 'application/json', 'Authorization': "Basic %s" % auth})
+
+ except HTTPError as e:
+ fail_json = dict(msg='GET: Received HTTP error for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except URLError as e:
+ fail_json = dict(msg='GET: Failed lookup url for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except SSLValidationError as e:
+ fail_json = dict(msg='GET: Error validating the server''s certificate for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except ConnectionError as e:
+ fail_json = dict(msg='GET: Error connecting to {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+
+ result['data'] = json.loads(response.read())
+
+ module.exit_json(**result)
+
+
+def main():
+ run_module()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_iptables_config.py b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_iptables_config.py
new file mode 100644
index 00000000..c9e90403
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_iptables_config.py
@@ -0,0 +1,295 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# (C) 2019 Red Hat Inc.
+# Copyright (C) 2019 Western Telematic Inc.
+#
+# GNU General Public License v3.0+
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+#
+# Module to configure WTI network IPTables Parameters on WTI OOB and PDU devices.
+# CPM remote_management
+#
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+ANSIBLE_METADATA = {
+ 'metadata_version': '1.1',
+ 'status': ['preview'],
+ 'supported_by': 'community'
+}
+
+DOCUMENTATION = """
+---
+module: cpm_iptables_config
+version_added: "2.10"
+author:
+ - "Western Telematic Inc. (@wtinetworkgear)"
+short_description: Set network IPTables parameters in WTI OOB and PDU devices
+description:
+ - "Set network IPTables parameters in WTI OOB and PDU devices"
+options:
+ cpm_url:
+ description:
+ - This is the URL of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_username:
+ description:
+ - This is the Username of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_password:
+ description:
+ - This is the Password of the WTI device to send the module.
+ type: str
+ required: true
+ use_https:
+ description:
+ - Designates to use an https connection or http connection.
+ type: bool
+ required: false
+ default: true
+ validate_certs:
+ description:
+ - If false, SSL certificates will not be validated. This should only be used
+ - on personally controlled sites using self-signed certificates.
+ type: bool
+ required: false
+ default: true
+ use_proxy:
+ description:
+ - Flag to control if the lookup will observe HTTP proxy environment variables when present.
+ type: bool
+ required: false
+ default: false
+ protocol:
+ description:
+ - The protocol that the iptables entry should be applied. 0 = ipv4, 1 = ipv6.
+ type: int
+ required: false
+ choices: [ 0, 1 ]
+ index:
+ description:
+ - Index in which command should be inserted. If not defined entry will start at position one.
+ type: list
+ required: false
+ command:
+ description:
+ - Actual iptables command to send to the WTI device.
+ type: list
+ required: true
+ clear:
+ description:
+ - Removes all the iptables for the protocol being defined before setting the newly defined entry.
+ type: int
+ required: false
+ choices: [ 0, 1 ]
+notes:
+ - Use C(groups/cpm) in C(module_defaults) to set common options used between CPM modules.
+"""
+
+EXAMPLES = """
+# Set Network IPTables Parameters
+- name: Set the an IPTables Parameter for a WTI device
+ cpm_iptables_config:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+ command: "iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT"
+
+# Sets multiple Network IPTables Parameters
+- name: Set the IPTables Parameters a WTI device
+ cpm_iptables_config:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+ index:
+ - 1
+ - 2
+ command:
+ - "iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT"
+ - "iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT"
+"""
+
+RETURN = """
+data:
+ description: The output JSON returned from the commands sent
+ returned: always
+ type: complex
+ contains:
+ iptables:
+ description: Current k/v pairs of interface info for the WTI device after module execution.
+ returned: always
+ type: dict
+ sample: [{ "eth0": { "ietf-ipv4": { "clear": 1, "entries": [
+ { "entry": "iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT", "index": "1" },
+ {"entry": "iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT", "index": "2" }]}}}]
+"""
+
+import base64
+import json
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
+from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
+
+
+def assemble_json(cpmmodule, existing_interface):
+ total_change = total_commands = total_indices = 0
+ is_clear = is_changed = protocol = 0
+ negotiation = None
+ json_load = ""
+ ietfstring = "ietf-ipv4"
+
+ indices = []
+ commands = []
+
+ for x in range(0, 48):
+ indices.insert(x, None)
+ commands.insert(x, None)
+
+ if (cpmmodule.params['clear'] is not None):
+ is_clear = int(cpmmodule.params['clear'])
+
+ if (cpmmodule.params['protocol'] is not None):
+ protocol = int(cpmmodule.params['protocol'])
+ if (protocol == 1):
+ ietfstring = "ietf-ipv6"
+
+ index = cpmmodule.params['index']
+ if (index is not None):
+ if isinstance(index, list):
+ for x in index:
+ indices.insert(total_indices, (int(to_native(x))) - 1)
+ total_indices += 1
+
+ command = cpmmodule.params['command']
+ if (command is not None):
+ if isinstance(command, list):
+ for x in command:
+ if (total_indices == 0):
+ commands.insert(total_commands, to_native(x))
+ else:
+ commands.insert(indices[total_commands], to_native(x))
+ total_commands += 1
+
+ if (total_indices > 0):
+ if (total_commands != total_indices):
+ return None
+
+ for x in range(0, 48):
+ if (commands[x] is not None):
+ if ((existing_interface["iptables"][0]["eth0"][ietfstring]["entries"][x]["entry"] != commands[x]) or (is_clear == 1)):
+ if (is_changed > 0):
+ json_load = '%s,' % (json_load)
+ json_load = '%s{"entry": "%s","index": "%d"}' % (json_load, commands[x], (x + 1))
+ is_changed += 1
+
+ if (is_changed > 0) or (is_clear > 0):
+ json_load = '{"iptables": [{"eth0": { "%s": { "clear": %d, "entries": [ %s ]}}}]}' % (ietfstring, is_clear, json_load)
+
+ return json_load
+
+
+def run_module():
+ # define the available arguments/parameters that a user can pass to
+ # the module
+ module_args = dict(
+ cpm_url=dict(type='str', required=True),
+ cpm_username=dict(type='str', required=True),
+ cpm_password=dict(type='str', required=True, no_log=True),
+ protocol=dict(type='int', required=False, default=0, choices=[0, 1]),
+ index=dict(type='list', element='int', required=False, default=None),
+ command=dict(type='list', element='str', required=True),
+ clear=dict(type='int', required=False, default=None, choices=[0, 1]),
+ use_https=dict(type='bool', default=True),
+ validate_certs=dict(type='bool', default=True),
+ use_proxy=dict(type='bool', default=False)
+ )
+
+ result = dict(
+ changed=False,
+ data=''
+ )
+
+ module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)
+
+ auth = to_text(base64.b64encode(to_bytes('{0}:{1}'.format(to_native(module.params['cpm_username']), to_native(module.params['cpm_password'])),
+ errors='surrogate_or_strict')))
+
+ if module.params['use_https'] is True:
+ transport = "https://"
+ else:
+ transport = "http://"
+
+ fullurl = ("%s%s/api/v2/config/iptables" % (transport, to_native(module.params['cpm_url'])))
+ method = 'GET'
+ try:
+ response = open_url(fullurl, data=None, method=method, validate_certs=module.params['validate_certs'], use_proxy=module.params['use_proxy'],
+ headers={'Content-Type': 'application/json', 'Authorization': "Basic %s" % auth})
+
+ except HTTPError as e:
+ fail_json = dict(msg='GET: Received HTTP error for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except URLError as e:
+ fail_json = dict(msg='GET: Failed lookup url for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except SSLValidationError as e:
+ fail_json = dict(msg='GET: Error validating the server''s certificate for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except ConnectionError as e:
+ fail_json = dict(msg='GET: Error connecting to {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+
+ result['data'] = json.loads(response.read())
+ payload = assemble_json(module, result['data'])
+
+ if module.check_mode:
+ if (payload is not None) and (len(payload) > 0):
+ result['changed'] = True
+ else:
+ if (payload is not None) and (len(payload) > 0):
+ fullurl = ("%s%s/api/v2/config/iptables" % (transport, to_native(module.params['cpm_url'])))
+ method = 'POST'
+
+ try:
+ response = open_url(fullurl, data=payload, method=method, validate_certs=module.params['validate_certs'], use_proxy=module.params['use_proxy'],
+ headers={'Content-Type': 'application/json', 'Authorization': "Basic %s" % auth})
+
+ except HTTPError as e:
+ fail_json = dict(msg='POST: Received HTTP error for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except URLError as e:
+ fail_json = dict(msg='POST: Failed lookup url for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except SSLValidationError as e:
+ fail_json = dict(msg='POST: Error validating the server''s certificate for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except ConnectionError as e:
+ fail_json = dict(msg='POST: Error connecting to {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+
+ result['changed'] = True
+ result['data'] = json.loads(response.read())
+
+ module.exit_json(**result)
+
+
+def main():
+ run_module()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_iptables_info.py b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_iptables_info.py
new file mode 100644
index 00000000..27a7163f
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_iptables_info.py
@@ -0,0 +1,175 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# (C) 2019 Red Hat Inc.
+# Copyright (C) 2019 Western Telematic Inc.
+#
+# GNU General Public License v3.0+
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+#
+# Module to retrieve WTI Network IPTables Parameters from WTI OOB and PDU devices.
+# CPM remote_management
+#
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+ANSIBLE_METADATA = {
+ 'metadata_version': '1.1',
+ 'status': ['preview'],
+ 'supported_by': 'community'
+}
+
+DOCUMENTATION = """
+---
+module: cpm_iptables_info
+version_added: "2.10"
+author:
+ - "Western Telematic Inc. (@wtinetworkgear)"
+short_description: Get network IPTABLES parameters from WTI OOB and PDU devices
+description:
+ - "Get network IPTABLES parameters from WTI OOB and PDU devices"
+options:
+ cpm_url:
+ description:
+ - This is the URL of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_username:
+ description:
+ - This is the Username of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_password:
+ description:
+ - This is the Password of the WTI device to send the module.
+ type: str
+ required: true
+ use_https:
+ description:
+ - Designates to use an https connection or http connection.
+ type: bool
+ required: false
+ default: true
+ validate_certs:
+ description:
+ - If false, SSL certificates will not be validated. This should only be used
+ - on personally controlled sites using self-signed certificates.
+ type: bool
+ required: false
+ default: true
+ use_proxy:
+ description:
+ - Flag to control if the lookup will observe HTTP proxy environment variables when present.
+ type: bool
+ required: false
+ default: false
+notes:
+ - Use C(groups/cpm) in C(module_defaults) to set common options used between CPM modules.)
+"""
+
+EXAMPLES = """
+- name: Get the network IPTABLES Parameters for a WTI device.
+ cpm_interface_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+
+- name: Get the network IPTABLES Parameters for a WTI device.
+ cpm_interface_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: false
+ validate_certs: false
+"""
+
+RETURN = """
+data:
+ description: The output JSON returned from the commands sent
+ returned: always
+ type: complex
+ contains:
+ iptables:
+ description: Current k/v pairs of IPTABLES info for the WTI device after module execution.
+ returned: always
+ type: dict
+ sample: {"iptables": [{"eth0": {"ietf-ipv4":
+ [{"clear": 0, "entries": [{"entry": "test10", "index": "1"}, {"entry": "", "index": "2" }]}],
+ "ietf-ipv6":
+ [{"clear": 0, "entries": [{"entry": "test30", "index": "1"}, {"entry": "test40", "index": "2" }]}]}}]}
+"""
+
+import base64
+import json
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
+from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
+
+
+def run_module():
+ # define the available arguments/parameters that a user can pass to
+ # the module
+ module_args = dict(
+ cpm_url=dict(type='str', required=True),
+ cpm_username=dict(type='str', required=True),
+ cpm_password=dict(type='str', required=True, no_log=True),
+ use_https=dict(type='bool', default=True),
+ validate_certs=dict(type='bool', default=True),
+ use_proxy=dict(type='bool', default=False)
+ )
+
+ result = dict(
+ changed=False,
+ data=''
+ )
+
+ module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)
+
+ auth = to_text(base64.b64encode(to_bytes('{0}:{1}'.format(to_native(module.params['cpm_username']), to_native(module.params['cpm_password'])),
+ errors='surrogate_or_strict')))
+
+ if module.params['use_https'] is True:
+ protocol = "https://"
+ else:
+ protocol = "http://"
+
+ fullurl = ("%s%s/api/v2/config/iptables" % (protocol, to_native(module.params['cpm_url'])))
+
+ try:
+ response = open_url(fullurl, data=None, method='GET', validate_certs=module.params['validate_certs'], use_proxy=module.params['use_proxy'],
+ headers={'Content-Type': 'application/json', 'Authorization': "Basic %s" % auth})
+
+ except HTTPError as e:
+ fail_json = dict(msg='GET: Received HTTP error for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except URLError as e:
+ fail_json = dict(msg='GET: Failed lookup url for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except SSLValidationError as e:
+ fail_json = dict(msg='GET: Error validating the server''s certificate for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except ConnectionError as e:
+ fail_json = dict(msg='GET: Error connecting to {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+
+ result['data'] = json.loads(response.read())
+
+ module.exit_json(**result)
+
+
+def main():
+ run_module()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_plugconfig.py b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_plugconfig.py
new file mode 100644
index 00000000..4215edcb
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_plugconfig.py
@@ -0,0 +1,272 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# (C) 2018 Red Hat Inc.
+# Copyright (C) 2018 Western Telematic Inc. <kenp@wti.com>
+#
+# GNU General Public License v3.0+
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+#
+# Module to execute WTI Plug Configuration Commands on WTI OOB and PDU devices.
+# WTI remote_management
+#
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+ANSIBLE_METADATA = {
+ 'metadata_version': '1.1',
+ 'status': ['preview'],
+ 'supported_by': 'community'
+}
+
+DOCUMENTATION = """
+---
+module: cpm_plugconfig
+version_added: "2.8"
+author: "Western Telematic Inc. (@wtinetworkgear)"
+short_description: Get and Set Plug Parameters on WTI OOB and PDU power devices
+description:
+ - "Get and Set Plug Parameters on WTI OOB and PDU devices"
+options:
+ cpm_action:
+ description:
+ - This is the Action to send the module.
+ type: str
+ required: true
+ choices: [ "getplugconfig", "setplugconfig" ]
+ cpm_url:
+ description:
+ - This is the URL of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_username:
+ description:
+ - This is the Username of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_password:
+ description:
+ - This is the Password of the WTI device to send the module.
+ type: str
+ required: true
+ use_https:
+ description:
+ - Designates to use an https connection or http connection.
+ type: bool
+ required: false
+ default: true
+ validate_certs:
+ description:
+ - If false, SSL certificates will not be validated. This should only be used
+ - on personally controlled sites using self-signed certificates.
+ type: bool
+ required: false
+ default: true
+ use_proxy:
+ description: Flag to control if the lookup will observe HTTP proxy environment variables when present.
+ type: bool
+ required: false
+ default: false
+ plug_id:
+ description:
+ - This is the plug number that is to be manipulated
+ - For the getplugconfig command, the plug_id 'all' will return the status of all the plugs the
+ - user has rights to access.
+ type: str
+ required: true
+ plug_name:
+ description:
+ - The new name of the Plug.
+ type: str
+ required: false
+ plug_bootdelay:
+ description:
+ - On a reboot command, this is the time when a plug will turn on power, after it has been turned off.
+ - 0='0.5 Secs', 1='1 Sec', 2='2 Sec', 3='5 Sec', 4='15 Sec', 5='30 Sec', 6='1 Min', 7='2 Mins',
+ - 8='3 Mins', 9='5 Mins'.
+ type: int
+ required: false
+ choices: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
+ plug_default:
+ description:
+ - What the Plugs default state is when the device starts. 0 - Off, 1 - On.
+ type: int
+ required: false
+ choices: [ 0, 1 ]
+ plug_bootpriority:
+ description:
+ - Prioritizes which plug gets its state changed first. The lower the number the higher the priority.
+ - Valid value can from 1 to the maximum number of plugs of the WTI unit.
+ type: int
+ required: false
+"""
+
+EXAMPLES = """
+# Get Plug parameters for all ports
+- name: Get the Plug parameters for ALL ports of a WTI Power device
+ cpm_plugconfig:
+ cpm_action: "getplugconfig"
+ cpm_url: "rest.wti.com"
+ cpm_username: "restpower"
+ cpm_password: "restfulpowerpass12"
+ use_https: true
+ validate_certs: true
+ plug_id: "all"
+
+# Get Plug parameters for port 2
+- name: Get the Plug parameters for the given port of a WTI Power device
+ cpm_plugconfig:
+ cpm_action: "getplugconfig"
+ cpm_url: "rest.wti.com"
+ cpm_username: "restpower"
+ cpm_password: "restfulpowerpass12"
+ use_https: true
+ validate_certs: false
+ plug_id: "2"
+
+# Configure plug 5
+- name: Configure parameters for Plug 5 on a given WTI Power device
+ cpm_plugconfig:
+ cpm_action: "setplugconfig"
+ cpm_url: "rest.wti.com"
+ cpm_username: "restpower"
+ cpm_password: "restfulpowerpass12"
+ use_https: true
+ plug_id: "5"
+ plug_name: "NewPlugNameFive"
+ plug_bootdelay: "3"
+ plug_default: "0"
+ plug_bootpriority: "1"
+"""
+
+RETURN = """
+data:
+ description: The output JSON returned from the commands sent
+ returned: always
+ type: str
+"""
+
+import base64
+import json
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
+from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
+
+
+def assemble_json(cpmmodule, cpmresult):
+ json_load = ""
+ plugspassed = cpmmodule.params["plug_id"].split(",")
+
+ for val in plugspassed:
+ if len(json_load) == 0:
+ json_load = '{"plugs": ['
+ else:
+ json_load = '%s,' % (json_load)
+
+ json_load = '%s{"plug": "%s"' % (json_load, to_native(val))
+
+ if cpmmodule.params["plug_name"] is not None:
+ json_load = '%s,"plugname": "%s"' % (json_load, to_native(cpmmodule.params["plug_name"]))
+ if cpmmodule.params["plug_bootdelay"] is not None:
+ json_load = '%s,"bootdelay": "%s"' % (json_load, to_native(cpmmodule.params["plug_bootdelay"]))
+ if cpmmodule.params["plug_default"] is not None:
+ json_load = '%s,"default": "%s"' % (json_load, to_native(cpmmodule.params["plug_default"]))
+ if cpmmodule.params["plug_bootpriority"] is not None:
+ json_load = '%s,"bootpriority": "%s"' % (json_load, to_native(cpmmodule.params["plug_bootpriority"]))
+
+ json_load = '%s}' % (json_load)
+
+ if len(json_load) > 0:
+ json_load = '%s]}' % (json_load)
+
+ return json_load
+
+
+def run_module():
+
+ # define the available arguments/parameters that a user can pass to
+ # the module
+ module_args = dict(
+ cpm_action=dict(choices=['getplugconfig', 'setplugconfig'], required=True),
+ cpm_url=dict(type='str', required=True),
+ cpm_username=dict(type='str', required=True),
+ cpm_password=dict(type='str', required=True, no_log=True),
+ plug_id=dict(type='str', required=True),
+ plug_name=dict(type='str', required=False),
+ plug_bootdelay=dict(type='int', required=False, default=None, choices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),
+ plug_default=dict(type='int', required=False, default=None, choices=[0, 1]),
+ plug_bootpriority=dict(type='int', required=False, default=None),
+ use_https=dict(type='bool', default=True),
+ validate_certs=dict(type='bool', default=True),
+ use_proxy=dict(type='bool', default=False)
+ )
+
+ result = dict(
+ changed=False,
+ data='',
+ debug=''
+ )
+
+ module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)
+
+ if module.check_mode:
+ return result
+
+ auth = to_text(base64.b64encode(to_bytes('{0}:{1}'.format(to_native(module.params['cpm_username']), to_native(module.params['cpm_password'])),
+ errors='surrogate_or_strict')))
+
+ if module.params['use_https'] is True:
+ protocol = "https://"
+ else:
+ protocol = "http://"
+
+ Payload = None
+ if (module.params['cpm_action'] == 'getplugconfig'):
+ fullurl = ("%s%s/api/v2/config/powerplugconfig" % (protocol, to_native(module.params['cpm_url'])))
+ if (module.params['plug_id'].lower() != 'all'):
+ fullurl = '%s?plug=%s' % (fullurl, to_native(module.params['plug_id']))
+ method = 'GET'
+ elif (module.params['cpm_action'] == 'setplugconfig'):
+ Payload = assemble_json(module, result)
+ result['debug'] = Payload
+ fullurl = ("%s%s/api/v2/config/powerplugconfig" % (protocol, to_native(module.params['cpm_url'])))
+ method = 'POST'
+
+ try:
+ response = open_url(fullurl, data=Payload, method=method, validate_certs=module.params['validate_certs'], use_proxy=module.params['use_proxy'],
+ headers={'Content-Type': 'application/json', 'Authorization': "Basic %s" % auth})
+ if (method != 'GET'):
+ result['changed'] = True
+
+ except HTTPError as e:
+ fail_json = dict(msg='Received HTTP error for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except URLError as e:
+ fail_json = dict(msg='Failed lookup url for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except SSLValidationError as e:
+ fail_json = dict(msg='Error validating the server''s certificate for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except ConnectionError as e:
+ fail_json = dict(msg='Error connecting to for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+
+ result['data'] = json.loads(response.read())
+
+ module.exit_json(**result)
+
+
+def main():
+ run_module()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_plugcontrol.py b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_plugcontrol.py
new file mode 100644
index 00000000..5d62759f
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_plugcontrol.py
@@ -0,0 +1,234 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# (C) 2018 Red Hat Inc.
+# Copyright (C) 2018 Western Telematic Inc. <kenp@wti.com>
+#
+# GNU General Public License v3.0+
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+#
+# Module to execute WTI Plug Commands on WTI OOB and PDU devices.
+# WTI remote_management
+#
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+ANSIBLE_METADATA = {
+ 'metadata_version': '1.1',
+ 'status': ['preview'],
+ 'supported_by': 'community'
+}
+
+DOCUMENTATION = """
+---
+module: cpm_plugcontrol
+version_added: "2.8"
+author: "Western Telematic Inc. (@wtinetworkgear)"
+short_description: Get and Set Plug actions on WTI OOB and PDU power devices
+description:
+ - "Get and Set Plug actions on WTI OOB and PDU devices"
+options:
+ cpm_action:
+ description:
+ - This is the Action to send the module.
+ type: str
+ required: true
+ choices: [ "getplugcontrol", "setplugcontrol" ]
+ cpm_url:
+ description:
+ - This is the URL of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_username:
+ description:
+ - This is the Username of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_password:
+ description:
+ - This is the Password of the WTI device to send the module.
+ type: str
+ required: true
+ use_https:
+ description:
+ - Designates to use an https connection or http connection.
+ type: bool
+ required: false
+ default: true
+ validate_certs:
+ description:
+ - If false, SSL certificates will not be validated. This should only be used
+ - on personally controlled sites using self-signed certificates.
+ type: bool
+ required: false
+ default: true
+ use_proxy:
+ description: Flag to control if the lookup will observe HTTP proxy environment variables when present.
+ type: bool
+ required: false
+ default: false
+ plug_id:
+ description:
+ - This is the plug number or the plug name that is to be manipulated
+ - For the plugget command, the plug_id 'all' will return the status of all the plugs the
+ - user has rights to access.
+ type: str
+ required: true
+ plug_state:
+ description:
+ - This is what action to take on the plug.
+ type: str
+ required: false
+ choices: [ "on", "off", "boot", "default" ]
+"""
+
+EXAMPLES = """
+# Get Plug status for all ports
+- name: Get the Plug status for ALL ports of a WTI device
+ cpm_plugcontrol:
+ cpm_action: "getplugcontrol"
+ cpm_url: "rest.wti.com"
+ cpm_username: "restpower"
+ cpm_password: "restfulpowerpass12"
+ use_https: true
+ validate_certs: true
+ plug_id: "all"
+
+# Get Plug status for port 2
+- name: Get the Plug status for the given port of a WTI device
+ cpm_plugcontrol:
+ cpm_action: "getplugcontrol"
+ cpm_url: "rest.wti.com"
+ cpm_username: "restpower"
+ cpm_password: "restfulpowerpass12"
+ use_https: true
+ validate_certs: false
+ plug_id: "2"
+
+# Reboot plug 5
+- name: Reboot Plug 5 on a given WTI device
+ cpm_plugcontrol:
+ cpm_action: "setplugcontrol"
+ cpm_url: "rest.wti.com"
+ cpm_username: "restpower"
+ cpm_password: "restfulpowerpass12"
+ use_https: true
+ plug_id: "5"
+ plug_state: "boot"
+"""
+
+RETURN = """
+data:
+ description: The output JSON returned from the commands sent
+ returned: always
+ type: str
+"""
+
+import base64
+import json
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
+from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
+
+
+def assemble_json(cpmmodule, cpmresult):
+ json_load = ""
+ plugspassed = cpmmodule.params["plug_id"].split(",")
+
+ for val in plugspassed:
+ if (val.isdigit() is True):
+ json_load = '%s{"plug": "%s"' % (json_load, to_native(val))
+ else:
+ json_load = '%s{"plugname": "%s"' % (json_load, to_native(val))
+
+ if cpmmodule.params["plug_state"] is not None:
+ json_load = '%s,"state": "%s"' % (json_load, to_native(cpmmodule.params["plug_state"]))
+
+ json_load = '%s}' % (json_load)
+
+ return json_load
+
+
+def run_module():
+
+ # define the available arguments/parameters that a user can pass to
+ # the module
+ module_args = dict(
+ cpm_action=dict(choices=['getplugcontrol', 'setplugcontrol'], required=True),
+ cpm_url=dict(type='str', required=True),
+ cpm_username=dict(type='str', required=True),
+ cpm_password=dict(type='str', required=True, no_log=True),
+ plug_id=dict(type='str', required=True),
+ plug_state=dict(choices=['on', 'off', 'boot', 'default'], required=False),
+ use_https=dict(type='bool', default=True),
+ validate_certs=dict(type='bool', default=True),
+ use_proxy=dict(type='bool', default=False)
+ )
+
+ result = dict(
+ changed=False,
+ data=''
+ )
+
+ module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)
+
+ if module.check_mode:
+ return result
+
+ auth = to_text(base64.b64encode(to_bytes('{0}:{1}'.format(to_native(module.params['cpm_username']), to_native(module.params['cpm_password'])),
+ errors='surrogate_or_strict')))
+
+ if module.params['use_https'] is True:
+ protocol = "https://"
+ else:
+ protocol = "http://"
+
+ Payload = None
+ if (module.params['cpm_action'] == 'getplugcontrol'):
+ fullurl = ("%s%s/api/v2/config/powerplug" % (protocol, to_native(module.params['cpm_url'])))
+ if (module.params['plug_id'].lower() != 'all'):
+ fullurl = '%s?plug=%s' % (fullurl, to_native(module.params['plug_id']))
+ method = 'GET'
+ elif (module.params['cpm_action'] == 'setplugcontrol'):
+ Payload = assemble_json(module, result)
+ fullurl = ("%s%s/api/v2/config/powerplug" % (protocol, to_native(module.params['cpm_url'])))
+ method = 'POST'
+
+ try:
+ response = open_url(fullurl, data=Payload, method=method, validate_certs=module.params['validate_certs'], use_proxy=module.params['use_proxy'],
+ headers={'Content-Type': 'application/json', 'Authorization': "Basic %s" % auth})
+ if (method != 'GET'):
+ result['changed'] = True
+
+ except HTTPError as e:
+ fail_json = dict(msg='Received HTTP error for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except URLError as e:
+ fail_json = dict(msg='Failed lookup url for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except SSLValidationError as e:
+ fail_json = dict(msg='Error validating the server''s certificate for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except ConnectionError as e:
+ fail_json = dict(msg='Error connecting to for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+
+ result['data'] = json.loads(response.read())
+
+ module.exit_json(**result)
+
+
+def main():
+ run_module()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_power_info.py b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_power_info.py
new file mode 100644
index 00000000..163d9511
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_power_info.py
@@ -0,0 +1,242 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# (C) 2019 Red Hat Inc.
+# Copyright (C) 2019 Western Telematic Inc.
+#
+# GNU General Public License v3.0+
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+#
+# Module to retrieve WTI Power information from WTI OOB and PDU devices.
+# CPM remote_management
+#
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+ANSIBLE_METADATA = {
+ 'metadata_version': '1.1',
+ 'status': ['preview'],
+ 'supported_by': 'community'
+}
+
+DOCUMENTATION = """
+---
+module: cpm_power_info
+version_added: "2.9"
+author:
+ - "Western Telematic Inc. (@wtinetworkgear)"
+short_description: Get the Power Information of a WTI device
+description:
+ - "Get the Power Information of a WTI device"
+options:
+ cpm_url:
+ description:
+ - This is the URL of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_username:
+ description:
+ - This is the Username of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_password:
+ description:
+ - This is the Password of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_startdate:
+ description:
+ - Start date of the range to look for power data
+ type: str
+ required: false
+ cpm_enddate:
+ description:
+ - End date of the range to look for power data
+ type: str
+ required: false
+ use_https:
+ description:
+ - Designates to use an https connection or http connection.
+ type: bool
+ required: false
+ default: true
+ validate_certs:
+ description:
+ - If false, SSL certificates will not be validated. This should only be used
+ - on personally controlled sites using self-signed certificates.
+ type: bool
+ required: false
+ default: true
+ use_proxy:
+ description:
+ - Flag to control if the lookup will observe HTTP proxy environment variables when present.
+ type: bool
+ required: false
+ default: false
+notes:
+ - Use C(groups/cpm) in C(module_defaults) to set common options used between CPM modules.)
+"""
+
+EXAMPLES = """
+- name: Get the Power Information of a WTI device
+ cpm_power_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+
+- name: Get the Power Information of a WTI device
+ cpm_power_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: false
+ validate_certs: false
+ startdate: 01-12-2020"
+ enddate: 02-16-2020"
+"""
+
+RETURN = """
+data:
+ description: The output JSON returned from the commands sent
+ returned: always
+ type: complex
+ contains:
+ timestamp:
+ description: Current timestamp of the WTI device after module execution.
+ returned: success
+ type: str
+ sample: "2020-02-24T20:54:03+00:00"
+ powerunit:
+ description: Identifies if the WTI device is a power type device.
+ returned: success
+ type: str
+ sample: "1"
+ outletmetering:
+ description: Identifies if the WTI device has Poiwer Outlet metering.
+ returned: success
+ type: str
+ sample: "1"
+ ats:
+ description: Identifies if the WTI device is an ATS type of power device.
+ returned: success
+ type: str
+ sample: "1"
+ plugcount:
+ description: Current outlet plug count of the WTI device after module execution.
+ returned: success
+ type: str
+ sample: "8"
+ powerfactor:
+ description: Power factor of the WTI device after module execution.
+ returned: success
+ type: str
+ sample: "100"
+ powereff:
+ description: Power efficiency of the WTI device after module execution.
+ returned: success
+ type: str
+ sample: "100"
+ powerdatacount:
+ description: Total powerdata samples returned after module execution.
+ returned: success
+ type: str
+ sample: "1"
+ powerdata:
+ description: Power data of the WTI device after module execution.
+ returned: success
+ type: dict
+ sample: [ { "timestamp": "2020-02-24T21:45:18+00:00",
+ "branch1": [{ "voltage1": "118.00","current1": "0.00","current2": "0.00","current3": "0.00","current4": "0.00",
+ "current5": "0.00","current6": "0.00","current7": "0.00","current8": "0.00"}] }]
+ status:
+ description: Return status after module completion
+ returned: always
+ type: dict
+ sample: { "code": "0", "text": "OK" }
+"""
+
+import base64
+import json
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
+from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
+
+
+def run_module():
+ # define the available arguments/parameters that a user can pass to
+ # the module
+ module_args = dict(
+ cpm_url=dict(type='str', required=True),
+ cpm_username=dict(type='str', required=True),
+ cpm_password=dict(type='str', required=True, no_log=True),
+ cpm_startdate=dict(type='str', required=False),
+ cpm_enddate=dict(type='str', required=False),
+ use_https=dict(type='bool', default=True),
+ validate_certs=dict(type='bool', default=True),
+ use_proxy=dict(type='bool', default=False)
+ )
+
+ result = dict(
+ changed=False,
+ data=''
+ )
+
+ module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)
+
+ auth = to_text(base64.b64encode(to_bytes('{0}:{1}'.format(to_native(module.params['cpm_username']), to_native(module.params['cpm_password'])),
+ errors='surrogate_or_strict')))
+
+ if module.params['use_https'] is True:
+ protocol = "https://"
+ else:
+ protocol = "http://"
+
+ additional = ""
+
+ if module.params['cpm_startdate'] is not None and (len(to_native(module.params['cpm_startdate'])) > 0):
+ if module.params['cpm_enddate'] is not None and (len(to_native(module.params['cpm_enddate'])) > 0):
+ additional = "?startdate=%s&enddate=%s" % (to_native(module.params['cpm_startdate']), to_native(module.params['cpm_enddate']))
+
+ fullurl = ("%s%s/api/v2/status/power" % (protocol, to_native(module.params['cpm_url'])))
+
+ if (len(additional) > 0):
+ fullurl += additional
+
+ try:
+ response = open_url(fullurl, data=None, method='GET', validate_certs=module.params['validate_certs'], use_proxy=module.params['use_proxy'],
+ headers={'Content-Type': 'application/json', 'Authorization': "Basic %s" % auth})
+
+ except HTTPError as e:
+ fail_json = dict(msg='GET: Received HTTP error for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except URLError as e:
+ fail_json = dict(msg='GET: Failed lookup url for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except SSLValidationError as e:
+ fail_json = dict(msg='GET: Error validating the server''s certificate for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except ConnectionError as e:
+ fail_json = dict(msg='GET: Error connecting to {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+
+ result['data'] = json.loads(response.read())
+
+ module.exit_json(**result)
+
+
+def main():
+ run_module()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_serial_port_config.py b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_serial_port_config.py
new file mode 100644
index 00000000..88dd74f0
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_serial_port_config.py
@@ -0,0 +1,360 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# (C) 2019 Red Hat Inc.
+# Copyright (C) 2019 Western Telematic Inc.
+#
+# GNU General Public License v3.0+
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+#
+# Module to execute WTI Serial Port Parameters on WTI OOB and PDU devices.
+# CPM remote_management
+#
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+ANSIBLE_METADATA = {
+ 'metadata_version': '1.1',
+ 'status': ['preview'],
+ 'supported_by': 'community'
+}
+
+DOCUMENTATION = """
+---
+module: cpm_serial_port_config
+version_added: "2.9"
+author: "Western Telematic Inc. (@wtinetworkgear)"
+short_description: Set Serial port parameters in WTI OOB and PDU devices
+description:
+ - "Set Serial port parameters in WTI OOB and PDU devices"
+options:
+ cpm_url:
+ description:
+ - This is the URL of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_username:
+ description:
+ - This is the Username of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_password:
+ description:
+ - This is the Password of the WTI device to send the module.
+ type: str
+ required: true
+ use_https:
+ description:
+ - Designates to use an https connection or http connection.
+ type: bool
+ required: false
+ default: true
+ validate_certs:
+ description:
+ - If false, SSL certificates will not be validated. This should only be used
+ - on personally controlled sites using self-signed certificates.
+ type: bool
+ required: false
+ default: true
+ use_proxy:
+ description: Flag to control if the lookup will observe HTTP proxy environment variables when present.
+ type: bool
+ required: false
+ default: false
+ port:
+ description:
+ - This is the port number that is getting the action performed on.
+ type: int
+ required: true
+ portname:
+ description:
+ - This is the Name of the Port that is displayed.
+ type: str
+ required: false
+ baud:
+ description:
+ - This is the baud rate to assign to the port.
+ - 0=300, 1=1200, 2=2400, 3=4800, 4=9600, 5=19200, 6=38400, 7=57600, 8=115200, 9=230400, 10=460800
+ type: int
+ required: false
+ choices: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
+ handshake:
+ description:
+ - This is the handshake to assign to the port, 0=None, 1=XON/XOFF, 2=RTS/CTS, 3=Both.
+ type: int
+ required: false
+ choices: [ 0, 1, 2, 3 ]
+ stopbits:
+ description:
+ - This is the stop bits to assign to the port, 0=1 Stop Bit, 1=2 Stop Bit.
+ type: int
+ required: false
+ choices: [ 0, 1 ]
+ parity:
+ description:
+ - This is the parity to assign to the port, 0=7-None, 1=7-Even, 2=7-Odd, 3=8-None, 4=8-Even, 5=8-Odd.
+ type: int
+ required: false
+ choices: [ 0, 1, 2, 3, 4, 5 ]
+ mode:
+ description:
+ - This is the port mode to assign to the port, 0=Any-to-Any. 1=Passive, 2=Buffer, 3=Modem, 4=ModemPPP.
+ type: int
+ required: false
+ choices: [ 0, 1, 2, 3, 4 ]
+ cmd:
+ description:
+ - This is the Admin Mode to assign to the port, 0=Deny, 1=Permit.
+ type: int
+ required: false
+ choices: [ 0, 1 ]
+ seq:
+ description:
+ - This is the type of Sequence Disconnect to assign to the port, 0=Three Characters (before and after), 1=One Character Only, 2=Off
+ type: int
+ required: false
+ choices: [ 1, 2, 3 ]
+ tout:
+ description:
+ - This is the Port Activity Timeout to assign to the port, 0=Off, 1=5 Min, 2=15 Min, 3=30 Min, 4=90 Min, 5=1 Min.
+ type: int
+ required: false
+ choices: [ 0, 1, 2, 3, 4, 5 ]
+ echo:
+ description:
+ -This is the command echo parameter to assign to the port, 0=Off, 1=On
+ type: bool
+ required: false
+ break_allow:
+ description:
+ - This is if the break character is allowed to be passed through the port, 0=Off, 1=On
+ type: bool
+ required: false
+ logoff:
+ description:
+ - This is the logout character to assign to the port
+ - If preceded by a ^ character, the sequence will be a control character. Used if seq is set to 0 or 1
+ type: str
+ required: false
+notes:
+ - Use C(groups/cpm) in C(module_defaults) to set common options used between CPM modules.
+"""
+
+EXAMPLES = """
+# Set Serial Port Parameters
+- name: Set the Port Parameters for port 2 of a WTI device
+ cpm_serial_port_config:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+ port: "2"
+ portname: "RouterLabel"
+ baud: "7"
+ handshake: "1"
+ stopbits: "0"
+ parity: "0"
+ mode: "0"
+ cmd: "0"
+ seq: "1"
+ tout: "1"
+ echo: "0"
+ break_allow: "0"
+ logoff: "^H"
+
+# Set Serial Port Port Name and Baud Rate Parameters
+- name: Set New port name and baud rate (115k) for port 4 of a WTI device
+ cpm_serial_port_config:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+ port: "4"
+ portname: "NewPortName1"
+ baud: "8"
+"""
+
+RETURN = """
+data:
+ description: The output JSON returned from the commands sent
+ returned: always
+ type: str
+"""
+
+import base64
+import json
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
+from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
+
+
+def assemble_json(cpmmodule, existing_serial):
+ total_change = 0
+
+ json_load = '{"serialports":{"port": "%s"' % to_native(cpmmodule.params["port"])
+
+ if cpmmodule.params["portname"] is not None:
+ if (existing_serial["serialports"][0]["portname"] != to_native(cpmmodule.params["portname"])):
+ total_change = (total_change | 1)
+ json_load = '%s,"portname": "%s"' % (json_load, to_native(cpmmodule.params["portname"]))
+ if cpmmodule.params["baud"] is not None:
+ if (existing_serial["serialports"][0]["baud"] != to_native(cpmmodule.params["baud"])):
+ total_change = (total_change | 2)
+ json_load = '%s,"baud": %s' % (json_load, to_native(cpmmodule.params["baud"]))
+ if cpmmodule.params["handshake"] is not None:
+ if (existing_serial["serialports"][0]["handshake"] != to_native(cpmmodule.params["handshake"])):
+ total_change = (total_change | 4)
+ json_load = '%s,"handshake": %s' % (json_load, to_native(cpmmodule.params["handshake"]))
+ if cpmmodule.params["stopbits"] is not None:
+ if (existing_serial["serialports"][0]["stopbits"] != to_native(cpmmodule.params["stopbits"])):
+ total_change = (total_change | 8)
+ json_load = '%s,"stopbits": %s' % (json_load, to_native(cpmmodule.params["stopbits"]))
+ if cpmmodule.params["parity"] is not None:
+ if (existing_serial["serialports"][0]["parity"] != to_native(cpmmodule.params["parity"])):
+ total_change = (total_change | 16)
+ json_load = '%s,"parity": %s' % (json_load, to_native(cpmmodule.params["parity"]))
+ if cpmmodule.params["mode"] is not None:
+ if (existing_serial["serialports"][0]["mode"] != to_native(cpmmodule.params["mode"])):
+ total_change = (total_change | 32)
+ json_load = '%s,"mode": %s' % (json_load, to_native(cpmmodule.params["mode"]))
+ if cpmmodule.params["cmd"] is not None:
+ if (existing_serial["serialports"][0]["cmd"] != to_native(cpmmodule.params["cmd"])):
+ total_change = (total_change | 64)
+ json_load = '%s,"cmd": %s' % (json_load, to_native(cpmmodule.params["cmd"]))
+ if cpmmodule.params["seq"] is not None:
+ if (existing_serial["serialports"][0]["seq"] != to_native(cpmmodule.params["seq"])):
+ total_change = (total_change | 128)
+ json_load = '%s,"seq": %s' % (json_load, to_native(cpmmodule.params["seq"]))
+ if cpmmodule.params["tout"] is not None:
+ if (existing_serial["serialports"][0]["tout"] != to_native(cpmmodule.params["tout"])):
+ total_change = (total_change | 256)
+ json_load = '%s,"tout": %s' % (json_load, to_native(cpmmodule.params["tout"]))
+ if cpmmodule.params["echo"] is not None:
+ if (int(existing_serial["serialports"][0]["echo"]) != int(cpmmodule.params["echo"])):
+ total_change = (total_change | 512)
+ json_load = '%s,"echo": %d' % (json_load, int(cpmmodule.params["echo"]))
+ if cpmmodule.params["break_allow"] is not None:
+ if (int(existing_serial["serialports"][0]["break"]) != int(cpmmodule.params["break_allow"])):
+ total_change = (total_change | 1024)
+ json_load = '%s,"break": %d' % (json_load, int(cpmmodule.params["break_allow"]))
+ if cpmmodule.params["logoff"] is not None and (len(cpmmodule.params["logoff"]) > 0):
+ if (existing_serial["serialports"][0]["logoff"] != to_native(cpmmodule.params["logoff"])):
+ total_change = (total_change | 2048)
+ json_load = '%s,"logoff": "%s"' % (json_load, to_native(cpmmodule.params["logoff"]))
+
+ json_load = '%s}}' % (json_load)
+
+ if (total_change == 0):
+ json_load = None
+ return json_load
+
+
+def run_module():
+ # define the available arguments/parameters that a user can pass to
+ # the module
+ module_args = dict(
+ cpm_url=dict(type='str', required=True),
+ cpm_username=dict(type='str', required=True),
+ cpm_password=dict(type='str', required=True, no_log=True),
+ port=dict(type='int', required=True),
+ portname=dict(type='str', required=False, default=None),
+ baud=dict(type='int', required=False, default=None, choices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]),
+ handshake=dict(type='int', required=False, default=None, choices=[0, 1, 2, 3]),
+ stopbits=dict(type='int', required=False, default=None, choices=[0, 1]),
+ parity=dict(type='int', required=False, default=None, choices=[0, 1, 2, 3, 4, 5]),
+ mode=dict(type='int', required=False, default=None, choices=[0, 1, 2, 3, 4]),
+ cmd=dict(type='int', required=False, default=None, choices=[0, 1]),
+ seq=dict(type='int', required=False, default=None, choices=[1, 2, 3]),
+ tout=dict(type='int', required=False, default=None, choices=[0, 1, 2, 3, 4, 5]),
+ echo=dict(type='bool', required=False, default=None),
+ break_allow=dict(type='bool', required=False),
+ logoff=dict(type='str', required=False, default=None),
+ use_https=dict(type='bool', default=True),
+ validate_certs=dict(type='bool', default=True),
+ use_proxy=dict(type='bool', default=False)
+ )
+
+ result = dict(
+ changed=False,
+ data=''
+ )
+
+ module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)
+
+ auth = to_text(base64.b64encode(to_bytes('{0}:{1}'.format(to_native(module.params['cpm_username']), to_native(module.params['cpm_password'])),
+ errors='surrogate_or_strict')))
+
+ if module.params['use_https'] is True:
+ protocol = "https://"
+ else:
+ protocol = "http://"
+
+ fullurl = ("%s%s/api/v2/config/serialports?ports=%s" % (protocol, to_native(module.params['cpm_url']), to_native(module.params['port'])))
+ method = 'GET'
+ try:
+ response = open_url(fullurl, data=None, method=method, validate_certs=module.params['validate_certs'], use_proxy=module.params['use_proxy'],
+ headers={'Content-Type': 'application/json', 'Authorization': "Basic %s" % auth})
+
+ except HTTPError as e:
+ fail_json = dict(msg='GET: Received HTTP error for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except URLError as e:
+ fail_json = dict(msg='GET: Failed lookup url for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except SSLValidationError as e:
+ fail_json = dict(msg='GET: Error validating the server''s certificate for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except ConnectionError as e:
+ fail_json = dict(msg='GET: Error connecting to {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+
+ result['data'] = json.loads(response.read())
+ payload = assemble_json(module, result['data'])
+
+ if module.check_mode:
+ if payload is not None:
+ result['changed'] = True
+ else:
+ if payload is not None:
+ fullurl = ("%s%s/api/v2/config/serialports" % (protocol, to_native(module.params['cpm_url'])))
+ method = 'POST'
+
+ try:
+ response = open_url(fullurl, data=payload, method=method, validate_certs=module.params['validate_certs'], use_proxy=module.params['use_proxy'],
+ headers={'Content-Type': 'application/json', 'Authorization': "Basic %s" % auth})
+
+ except HTTPError as e:
+ fail_json = dict(msg='POST: Received HTTP error for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except URLError as e:
+ fail_json = dict(msg='POST: Failed lookup url for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except SSLValidationError as e:
+ fail_json = dict(msg='POST: Error validating the server''s certificate for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except ConnectionError as e:
+ fail_json = dict(msg='POST: Error connecting to {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+
+ result['changed'] = True
+ result['data'] = json.loads(response.read())
+
+ module.exit_json(**result)
+
+
+def main():
+ run_module()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_serial_port_info.py b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_serial_port_info.py
new file mode 100644
index 00000000..5cfd0611
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_serial_port_info.py
@@ -0,0 +1,221 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# (C) 2019 Red Hat Inc.
+# Copyright (C) 2019 Western Telematic Inc.
+#
+# GNU General Public License v3.0+
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+#
+# Module to retrieve WTI Serial Port Parameters from WTI OOB and PDU devices.
+# CPM remote_management
+#
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+ANSIBLE_METADATA = {
+ 'metadata_version': '1.1',
+ 'status': ['preview'],
+ 'supported_by': 'community'
+}
+
+DOCUMENTATION = """
+---
+module: cpm_serial_port_info
+version_added: "2.9"
+author: "Western Telematic Inc. (@wtinetworkgear)"
+short_description: Get Serial port parameters in WTI OOB and PDU devices
+description:
+ - "Get Serial port parameters from WTI OOB and PDU devices"
+options:
+ cpm_url:
+ description:
+ - This is the URL of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_username:
+ description:
+ - This is the Username of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_password:
+ description:
+ - This is the Password of the WTI device to send the module.
+ type: str
+ required: true
+ use_https:
+ description:
+ - Designates to use an https connection or http connection.
+ type: bool
+ required: false
+ default: false
+ validate_certs:
+ description:
+ - If false, SSL certificates will not be validated. This should only be used
+ - on personally controlled sites using self-signed certificates.
+ type: bool
+ required: false
+ default: false
+ use_proxy:
+ description: Flag to control if the lookup will observe HTTP proxy environment variables when present.
+ type: bool
+ required: false
+ default: false
+ port:
+ description:
+ - This is the serial port number that is getting retrieved. It can include a single port
+ - number, multiple port numbers separated by commas, a list of port numbers, or an '*' character for all ports.
+ type: list
+ required: true
+ default: ['*']
+notes:
+ - Use C(groups/cpm) in C(module_defaults) to set common options used between CPM modules.)
+"""
+
+EXAMPLES = """
+- name: Get the Serial Port Parameters for port 2 of a WTI device
+ cpm_serial_port_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+ port: 2
+
+- name: Get the Serial Port Parameters for ports 2 and 4 of a WTI device
+ cpm_serial_port_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+ port: 2,4
+
+- name: Get the Serial Port Parameters for all ports of a WTI device
+ cpm_serial_port_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+ port: "*"
+"""
+
+RETURN = """
+data:
+ description: The output JSON returned from the commands sent
+ returned: always
+ type: complex
+ contains:
+ serialports:
+ description: List of data for each serial port
+ returned: success
+ type: list
+ sample:
+ - baud: 4
+ break: 1
+ cmd: 1
+ connstatus: Free
+ echo: 1
+ handshake: 2
+ logoff: '^X'
+ mode: 1
+ parity: 3
+ port: 2
+ portname: switch
+ seq: 2
+ stopbits: 1
+ tout: 0
+
+ - baud: 3
+ break: 1
+ cmd: 1
+ connstatus: Free
+ echo: 1
+ handshake: 2
+ logoff: '^X'
+ mode: 1
+ parity: 1
+ port: 4
+ portname: router
+ seq: 2
+ stopbits: 1
+ tout: 1
+"""
+
+import base64
+import json
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
+from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
+
+
+def run_module():
+ # define the available arguments/parameters that a user can pass to
+ # the module
+ module_args = dict(
+ cpm_url=dict(type='str', required=True),
+ cpm_username=dict(type='str', required=True),
+ cpm_password=dict(type='str', required=True, no_log=True),
+ port=dict(type='list', default=['*']),
+ use_https=dict(type='bool', default=False),
+ validate_certs=dict(type='bool', default=False),
+ use_proxy=dict(type='bool', default=False)
+ )
+
+ result = dict(
+ changed=False,
+ data=''
+ )
+
+ module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)
+
+ auth = to_text(base64.b64encode(to_bytes('{0}:{1}'.format(to_native(module.params['cpm_username']), to_native(module.params['cpm_password'])),
+ errors='surrogate_or_strict')))
+
+ if module.params['use_https'] is True:
+ protocol = "https://"
+ else:
+ protocol = "http://"
+
+ ports = module.params['port']
+ if isinstance(ports, list):
+ ports = ','.join(to_native(x) for x in ports)
+ fullurl = ("%s%s/api/v2/config/serialports?ports=%s" % (protocol, to_native(module.params['cpm_url']), ports))
+
+ try:
+ response = open_url(fullurl, data=None, method='GET', validate_certs=module.params['validate_certs'], use_proxy=module.params['use_proxy'],
+ headers={'Content-Type': 'application/json', 'Authorization': "Basic %s" % auth})
+
+ except HTTPError as e:
+ fail_json = dict(msg='GET: Received HTTP error for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except URLError as e:
+ fail_json = dict(msg='GET: Failed lookup url for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except SSLValidationError as e:
+ fail_json = dict(msg='GET: Error validating the server''s certificate for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except ConnectionError as e:
+ fail_json = dict(msg='GET: Error connecting to {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+
+ result['data'] = json.loads(response.read())
+
+ module.exit_json(**result)
+
+
+def main():
+ run_module()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_snmp_config.py b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_snmp_config.py
new file mode 100644
index 00000000..5b9764e6
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_snmp_config.py
@@ -0,0 +1,603 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# (C) 2019 Red Hat Inc.
+# Copyright (C) 2020 Western Telematic Inc.
+#
+# GNU General Public License v3.0+
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+#
+# Module to configure WTI network SNMP Parameters on WTI OOB and PDU devices.
+# CPM remote_management
+#
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+ANSIBLE_METADATA = {
+ 'metadata_version': '1.1',
+ 'status': ['preview'],
+ 'supported_by': 'community'
+}
+
+DOCUMENTATION = """
+---
+module: cpm_snmp_config
+version_added: "2.10"
+author:
+ - "Western Telematic Inc. (@wtinetworkgear)"
+short_description: Set network IPTables parameters in WTI OOB and PDU devices
+description:
+ - "Set network IPTables parameters in WTI OOB and PDU devices"
+options:
+ cpm_url:
+ description:
+ - This is the URL of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_username:
+ description:
+ - This is the Username of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_password:
+ description:
+ - This is the Password of the WTI device to send the module.
+ type: str
+ required: true
+ use_https:
+ description:
+ - Designates to use an https connection or http connection.
+ type: bool
+ required: false
+ default: true
+ validate_certs:
+ description:
+ - If false, SSL certificates will not be validated. This should only be used
+ - on personally controlled sites using self-signed certificates.
+ type: bool
+ required: false
+ default: true
+ use_proxy:
+ description:
+ - Flag to control if the lookup will observe HTTP proxy environment variables when present.
+ type: bool
+ required: false
+ default: false
+ protocol:
+ description:
+ - The protocol that the SNMP entry should be applied. 0 = ipv4, 1 = ipv6.
+ type: int
+ required: false
+ choices: [ 0, 1 ]
+ enable:
+ description:
+ - The activates SNMP polling for the specified interface and protocol.
+ type: int
+ required: false
+ choices: [ 0, 1 ]
+ interface:
+ description:
+ - The ethernet port for the SNMP we are defining.
+ type: str
+ required: false
+ choices: [ "eth0", "eth1", "ppp0" ]
+ readonly:
+ description:
+ - Controls the ability to change configuration parameters with SNMP.
+ type: int
+ required: false
+ choices: [ 0, 1 ]
+ version:
+ description:
+ - Defined which version of SNMP the device will respond to 0 = V1/V2 Only, 1 = V3 Only, 2 = V1/V2/V3.
+ type: int
+ required: false
+ choices: [ 0, 1, 2 ]
+ contact:
+ description:
+ - The name of the administrator responsible for SNMP issues.
+ type: str
+ required: false
+ location:
+ description:
+ - The location of the SNMP Server.
+ type: str
+ required: false
+ systemname:
+ description:
+ - The hostname of the WTI Device.
+ type: str
+ required: false
+ rocommunity:
+ description:
+ - Read Only Community Password, not used for SNMP V3.
+ type: str
+ required: false
+ rwcommunity:
+ description:
+ - Read/Write Community Password, not used for SNMP V3.
+ type: str
+ required: false
+ clear:
+ description:
+ - Removes all the users for the protocol being defined before setting the newly defined entries.
+ type: int
+ required: false
+ choices: [ 0, 1 ]
+ index:
+ description:
+ - Index of the user being modified (V3 only).
+ type: list
+ required: false
+ username:
+ description:
+ - Sets the User Name for SNMPv3 access (V3 only).
+ type: list
+ required: false
+ authpriv:
+ description:
+ - Configures the Authentication and Privacy features for SNMPv3 communication, 0 = Auth/NoPriv, 1 = Auth/Priv (V3 only).
+ type: list
+ required: false
+ authpass:
+ description:
+ - Sets the Authentication Password for SNMPv3 (V3 only).
+ type: list
+ required: false
+ authproto:
+ description:
+ - Which authentication protocol will be used, 0 = MD5, 1 = SHA1 (V3 only).
+ type: list
+ required: false
+ privpass:
+ description:
+ - Sets the Privacy Password for SNMPv3 (V3 only) (V3 only).
+ type: list
+ required: false
+ privproto:
+ description:
+ - Which privacy protocol will be used, 0 = DES, 1 = AES128 (V3 only).
+ type: list
+ required: false
+notes:
+ - Use C(groups/cpm) in C(module_defaults) to set common options used between CPM modules.
+"""
+
+EXAMPLES = """
+# Sets the device SNMP Parameters
+- name: Set the an SNMP Parameter for a WTI device
+ cpm_iptables_config:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ interface: "eth0"
+ use_https: true
+ validate_certs: false
+ protocol: 0
+ clear: 1
+ enable: 1
+ readonly: 0
+ version: 0
+ rocommunity: "ropassword"
+ rwcommunity: "rwpassword"
+
+# Sets the device SNMP Parameters
+- name: Set the SNMP Parameters a WTI device
+ cpm_iptables_config:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+ version: 1
+ index:
+ - 1
+ - 2
+ username:
+ - "username1"
+ - "username2"
+ authpriv:
+ - 1
+ - 1
+ authpass:
+ - "authpass1"
+ - "uthpass2"
+ authproto:
+ - 1
+ - 1
+ privpass:
+ - "authpass1"
+ - "uthpass2"
+ privproto:
+ - 1
+ - 1
+"""
+
+RETURN = """
+data:
+ description: The output JSON returned from the commands sent
+ returned: always
+ type: complex
+ contains:
+ snmpaccess:
+ description: Current k/v pairs of interface info for the WTI device after module execution.
+ returned: always
+ type: dict
+ sample: [{ "eth0": { "ietf-ipv4": { "clear": 1, "enable": 0, "readonly": 0, "version": 0, "users": [
+ { "username": "username1", "authpass": "testpass", "authpriv": "1", "authproto": "0", "privpass": "privpass1",
+ "privproto": "0", "index": "1" }]}}}]
+"""
+
+from collections import OrderedDict
+import base64
+import json
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
+from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
+
+
+def assemble_json(cpmmodule, existing_interface):
+ total_username = total_indices = 0
+ is_clear = is_changed = protocol = loop = 0
+ json_load = ""
+ ietfstring = "ietf-ipv4"
+ snmpenable = snmpversion = snmpreadonly = None
+ snmpsystemname = None
+ snmpcontact = None
+ snmplocation = None
+ snmprocommunity = None
+ snmprwcommunity = None
+ user_load = ""
+
+ indices = []
+ usernamearray = []
+ authpriv = []
+ authpassarray = []
+ authproto = []
+ privpassarray = []
+ privproto = []
+
+ for x in range(0, 48):
+ indices.insert(x, None)
+ usernamearray.insert(x, None)
+ authpriv.insert(x, None)
+ authpassarray.insert(x, None)
+ authproto.insert(x, None)
+ privpassarray.insert(x, None)
+ privproto.insert(x, None)
+
+ ports = cpmmodule.params['interface']
+
+ if (cpmmodule.params['clear'] is not None):
+ is_clear = int(cpmmodule.params['clear'])
+
+ if (cpmmodule.params['protocol'] is not None):
+ protocol = int(cpmmodule.params['protocol'])
+ if (protocol == 1):
+ ietfstring = "ietf-ipv6"
+
+ if (cpmmodule.params['enable'] is not None):
+ snmpenable = int(cpmmodule.params['enable'])
+
+ if (cpmmodule.params['version'] is not None):
+ snmpversion = int(cpmmodule.params['version'])
+
+ if (cpmmodule.params['readonly'] is not None):
+ snmpreadonly = int(cpmmodule.params['readonly'])
+
+ if (cpmmodule.params['systemname'] is not None):
+ snmpsystemname = to_native(cpmmodule.params['systemname'])
+
+ if (cpmmodule.params['contact'] is not None):
+ snmpcontact = to_native(cpmmodule.params['contact'])
+
+ if (cpmmodule.params['location'] is not None):
+ snmplocation = to_native(cpmmodule.params['location'])
+
+ if (cpmmodule.params['rocommunity'] is not None):
+ snmprocommunity = to_native(cpmmodule.params['rocommunity'])
+
+ if (cpmmodule.params['rwcommunity'] is not None):
+ snmprwcommunity = to_native(cpmmodule.params['rwcommunity'])
+
+ index = cpmmodule.params['index']
+ if (index is not None):
+ if isinstance(index, list):
+ for x in index:
+ indices.insert(total_indices, (int(to_native(x))) - 1)
+ total_indices += 1
+
+ ii = 0
+ index = cpmmodule.params['authpriv']
+ if (index is not None):
+ if isinstance(index, list):
+ for x in index:
+ authpriv.insert(ii, int(to_native(x)))
+ ii += 1
+
+ ii = 0
+ index = cpmmodule.params['authproto']
+ if (index is not None):
+ if isinstance(index, list):
+ for x in index:
+ authproto.insert(ii, int(to_native(x)))
+ ii += 1
+
+ ii = 0
+ index = cpmmodule.params['privproto']
+ if (index is not None):
+ if isinstance(index, list):
+ for x in index:
+ privproto.insert(ii, int(to_native(x)))
+ ii += 1
+
+ total_username = 0
+ usernamearray = cpmmodule.params['username']
+ if (usernamearray is not None):
+ if isinstance(usernamearray, list):
+ for x in usernamearray:
+ usernamearray[total_username] = to_native(x)
+ total_username += 1
+
+ ii = 0
+ authpassarray = cpmmodule.params['authpass']
+ if (authpassarray is not None):
+ if isinstance(authpassarray, list):
+ for x in authpassarray:
+ authpassarray[ii] = to_native(x)
+ ii += 1
+
+ ii = 0
+ authpassarray = cpmmodule.params['authpass']
+ if (authpassarray is not None):
+ if isinstance(authpassarray, list):
+ for x in authpassarray:
+ authpassarray[ii] = to_native(x)
+ ii += 1
+
+ ii = 0
+ privpassarray = cpmmodule.params['privpass']
+ if (privpassarray is not None):
+ if isinstance(privpassarray, list):
+ for x in privpassarray:
+ privpassarray[ii] = to_native(x)
+ ii += 1
+
+ if (total_indices > 0):
+ if (total_username != total_indices):
+ return None
+
+ for x in range(0, total_username):
+ if (usernamearray[x] is not None):
+ if (loop > 0):
+ user_load = '%s,' % (user_load)
+
+ user_load = '%s{"index": "%d"' % (user_load, (indices[x] + 1))
+
+ if (usernamearray[x] is not None):
+ if (existing_interface["snmpaccess"][0][ports][0][ietfstring]["users"][(indices[x])]["username"] != usernamearray[x]):
+ is_changed = True
+
+ user_load = '%s,"username": "%s"' % (user_load, usernamearray[x])
+ else:
+ user_load = '%s,"username": "%s"' % (user_load, existing_interface["snmpaccess"][0][ports][0][ietfstring]["users"][(indices[x])]["username"])
+
+ if (authpassarray[x] is not None):
+ if (existing_interface["snmpaccess"][0][ports][0][ietfstring]["users"][(indices[x])]["authpass"] != authpassarray[x]):
+ is_changed = True
+ user_load = '%s,"authpass": "%s"' % (user_load, authpassarray[x])
+ else:
+ user_load = '%s,"authpass": "%s"' % (user_load, existing_interface["snmpaccess"][0][ports][0][ietfstring]["users"][(indices[x])]["authpass"])
+
+ if (privpassarray[x] is not None):
+ if (existing_interface["snmpaccess"][0][ports][0][ietfstring]["users"][(indices[x])]["privpass"] != privpassarray[x]):
+ is_changed = True
+ user_load = '%s,"privpass": "%s"' % (user_load, privpassarray[x])
+ else:
+ user_load = '%s,"privpass": "%s"' % (user_load, existing_interface["snmpaccess"][0][ports][0][ietfstring]["users"][(indices[x])]["privpass"])
+
+ if (authpriv[x] is not None):
+ if (int(existing_interface["snmpaccess"][0][ports][0][ietfstring]["users"][(indices[x])]["authpriv"]) != int(authpriv[x])):
+ is_changed = True
+ user_load = '%s,"authpriv": "%s"' % (user_load, authpriv[x])
+ else:
+ user_load = '%s,"authpriv": "%s"' % (user_load, existing_interface["snmpaccess"][0][ports][0][ietfstring]["users"][(indices[x])]["authpriv"])
+
+ if (authproto[x] is not None):
+ if (int(existing_interface["snmpaccess"][0][ports][0][ietfstring]["users"][(indices[x])]["authproto"]) != int(authproto[x])):
+ is_changed = True
+ user_load = '%s,"authproto": "%s"' % (user_load, authproto[x])
+ else:
+ user_load = '%s,"authproto": "%s"' % (user_load, existing_interface["snmpaccess"][0][ports][0][ietfstring]["users"][(indices[x])]["authproto"])
+
+ if (privproto[x] is not None):
+ if (int(existing_interface["snmpaccess"][0][ports][0][ietfstring]["users"][(indices[x])]["privproto"]) != int(privproto[x])):
+ is_changed = True
+ user_load = '%s,"privproto": "%s"' % (user_load, privproto[x])
+ else:
+ user_load = '%s,"privproto": "%s"' % (user_load, existing_interface["snmpaccess"][0][ports][0][ietfstring]["users"][(indices[x])]["privproto"])
+
+ user_load = '%s}' % (user_load)
+ loop += 1
+
+ if (loop > 0):
+ json_load = '{"snmpaccess": [{"%s": { "%s": { "clear": %d, "change": %d' % (ports, ietfstring, is_clear, is_changed)
+
+ if (snmpenable is not None):
+ if (existing_interface["snmpaccess"][0][ports][0][ietfstring]["enable"] != snmpenable):
+ is_changed = True
+ json_load = '%s, "enable": %d' % (json_load, snmpenable)
+ else:
+ json_load = '%s,"enable": "%s"' % (json_load, existing_interface["snmpaccess"][0][ports][0][ietfstring]["enable"])
+
+ if (snmpversion is not None):
+ if (existing_interface["snmpaccess"][0][ports][0][ietfstring]["version"] != snmpversion):
+ is_changed = True
+ json_load = '%s, "version": %d' % (json_load, snmpversion)
+ else:
+ json_load = '%s,"version": "%s"' % (json_load, existing_interface["snmpaccess"][0][ports][0][ietfstring]["version"])
+
+ if (snmpreadonly is not None):
+ if (existing_interface["snmpaccess"][0][ports][0][ietfstring]["readonly"] != snmpreadonly):
+ is_changed = True
+ json_load = '%s, "readonly": %d' % (json_load, snmpreadonly)
+ else:
+ json_load = '%s,"readonly": "%s"' % (json_load, existing_interface["snmpaccess"][0][ports][0][ietfstring]["readonly"])
+
+ if (snmpsystemname is not None):
+ if (existing_interface["snmpaccess"][0][ports][0][ietfstring]["systemname"] != snmpsystemname):
+ is_changed = True
+ json_load = '%s, "systemname": %d' % (json_load, snmpsystemname)
+ else:
+ json_load = '%s,"systemname": "%s"' % (json_load, existing_interface["snmpaccess"][0][ports][0][ietfstring]["systemname"])
+
+ if (snmpcontact is not None):
+ if (existing_interface["snmpaccess"][0][ports][0][ietfstring]["contact"] != snmpcontact):
+ is_changed = True
+ json_load = '%s, "contact": %d' % (json_load, snmpcontact)
+ else:
+ json_load = '%s,"contact": "%s"' % (json_load, existing_interface["snmpaccess"][0][ports][0][ietfstring]["contact"])
+
+ if (snmplocation is not None):
+ if (existing_interface["snmpaccess"][0][ports][0][ietfstring]["location"] != snmplocation):
+ is_changed = True
+ json_load = '%s, "location": %d' % (json_load, snmplocation)
+ else:
+ json_load = '%s,"location": "%s"' % (json_load, existing_interface["snmpaccess"][0][ports][0][ietfstring]["location"])
+
+ if (snmprocommunity is not None):
+ if (existing_interface["snmpaccess"][0][ports][0][ietfstring]["rocommunity"] != snmprocommunity):
+ is_changed = True
+ json_load = '%s, "rocommunity": %d' % (json_load, snmprocommunity)
+ else:
+ json_load = '%s,"rocommunity": "%s"' % (json_load, existing_interface["snmpaccess"][0][ports][0][ietfstring]["rocommunity"])
+
+ if (snmprwcommunity is not None):
+ if (existing_interface["snmpaccess"][0][ports][0][ietfstring]["rwcommunity"] != snmprwcommunity):
+ is_changed = True
+ json_load = '%s, "rwcommunity": %d' % (json_load, snmprwcommunity)
+ else:
+ json_load = '%s,"rwcommunity": "%s"' % (json_load, existing_interface["snmpaccess"][0][ports][0][ietfstring]["rwcommunity"])
+
+ if (len(user_load) > 0):
+ json_load = '%s, "users": [ %s ]' % (json_load, user_load)
+
+ json_load = '%s}}}]}' % (json_load)
+
+ return is_changed, json_load
+
+
+def run_module():
+ # define the available arguments/parameters that a user can pass to
+ # the module
+ module_args = dict(
+ cpm_url=dict(type='str', required=True),
+ cpm_username=dict(type='str', required=True),
+ cpm_password=dict(type='str', required=True, no_log=True),
+ interface=dict(type='str', required=True, choices=["eth0", "eth1", "ppp0"]),
+ protocol=dict(type='int', required=False, default=0, choices=[0, 1]),
+ clear=dict(type='int', required=False, default=None, choices=[0, 1]),
+ enable=dict(type='int', required=False, default=None, choices=[0, 1]),
+ version=dict(type='int', required=False, default=None, choices=[0, 1, 2]),
+ readonly=dict(type='int', required=False, default=None, choices=[0, 1]),
+ systemname=dict(type='str', element='str', required=False),
+ contact=dict(type='str', element='str', required=False),
+ location=dict(type='str', element='str', required=False),
+ rocommunity=dict(type='str', element='str', required=False),
+ rwcommunity=dict(type='str', element='str', required=False),
+ index=dict(type='list', element='int', required=False, default=None),
+ username=dict(type='list', element='str', required=True),
+ authpriv=dict(type='list', element='int', required=False, default=None),
+ authproto=dict(type='list', element='int', required=False, default=None),
+ privproto=dict(type='list', element='int', required=False, default=None),
+ authpass=dict(type='list', element='str', required=False),
+ privpass=dict(type='list', element='str', required=False),
+ use_https=dict(type='bool', default=True),
+ validate_certs=dict(type='bool', default=True),
+ use_proxy=dict(type='bool', default=False)
+ )
+
+ result = dict(
+ changed=False,
+ data=''
+ )
+
+ module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)
+
+ auth = to_text(base64.b64encode(to_bytes('{0}:{1}'.format(to_native(module.params['cpm_username']), to_native(module.params['cpm_password'])),
+ errors='surrogate_or_strict')))
+
+ if module.params['use_https'] is True:
+ transport = "https://"
+ else:
+ transport = "http://"
+
+ fullurl = ("%s%s/api/v2/config/snmpaccess?ports=%s" % (transport, to_native(module.params['cpm_url']), to_native(module.params['interface'])))
+ method = 'GET'
+ try:
+ response = open_url(fullurl, data=None, method=method, validate_certs=module.params['validate_certs'], use_proxy=module.params['use_proxy'],
+ headers={'Content-Type': 'application/json', 'Authorization': "Basic %s" % auth})
+
+ except HTTPError as e:
+ fail_json = dict(msg='GET: Received HTTP error for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except URLError as e:
+ fail_json = dict(msg='GET: Failed lookup url for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except SSLValidationError as e:
+ fail_json = dict(msg='GET: Error validating the server''s certificate for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except ConnectionError as e:
+ fail_json = dict(msg='GET: Error connecting to {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+
+ was_changed = False
+ result['data'] = json.loads(response.read())
+ was_changed, payload = assemble_json(module, result['data'])
+# result['data'] = payload
+
+ if module.check_mode:
+ if (payload is not None) and (len(payload) > 0):
+ result['changed'] = True
+ else:
+ if (payload is not None) and (len(payload) > 0):
+ fullurl = ("%s%s/api/v2/config/snmpaccess" % (transport, to_native(module.params['cpm_url'])))
+ method = 'POST'
+
+ try:
+ response = open_url(fullurl, data=payload, method=method, validate_certs=module.params['validate_certs'], use_proxy=module.params['use_proxy'],
+ headers={'Content-Type': 'application/json', 'Authorization': "Basic %s" % auth})
+
+ except HTTPError as e:
+ fail_json = dict(msg='POST: Received HTTP error for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except URLError as e:
+ fail_json = dict(msg='POST: Failed lookup url for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except SSLValidationError as e:
+ fail_json = dict(msg='POST: Error validating the server''s certificate for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except ConnectionError as e:
+ fail_json = dict(msg='POST: Error connecting to {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+
+ result['changed'] = was_changed
+ result['data'] = json.loads(response.read())
+
+ module.exit_json(**result)
+
+
+def main():
+ run_module()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_snmp_info.py b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_snmp_info.py
new file mode 100644
index 00000000..4826ea6b
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_snmp_info.py
@@ -0,0 +1,193 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# (C) 2019 Red Hat Inc.
+# Copyright (C) 2020 Western Telematic Inc.
+#
+# GNU General Public License v3.0+
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+#
+# Module to retrieve WTI Network SNMP Parameters from WTI OOB and PDU devices.
+# CPM remote_management
+#
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+ANSIBLE_METADATA = {
+ 'metadata_version': '1.1',
+ 'status': ['preview'],
+ 'supported_by': 'community'
+}
+
+DOCUMENTATION = """
+---
+module: cpm_snmp_info
+version_added: "2.10"
+author:
+ - "Western Telematic Inc. (@wtinetworkgear)"
+short_description: Get network SNMP parameters from WTI OOB and PDU devices
+description:
+ - "Get network SNMP parameters from WTI OOB and PDU devices"
+options:
+ cpm_url:
+ description:
+ - This is the URL of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_username:
+ description:
+ - This is the Username of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_password:
+ description:
+ - This is the Password of the WTI device to send the module.
+ type: str
+ required: true
+ interface:
+ description:
+ - This is the ethernet port name that is getting retrieved. It can include a single ethernet
+ - port name, multiple ethernet port names separated by commas or not defined for all ports.
+ type: str
+ required: false
+ choices: [ "eth0", "eth1", "ppp0" ]
+ use_https:
+ description:
+ - Designates to use an https connection or http connection.
+ type: bool
+ required: false
+ default: true
+ validate_certs:
+ description:
+ - If false, SSL certificates will not be validated. This should only be used
+ - on personally controlled sites using self-signed certificates.
+ type: bool
+ required: false
+ default: true
+ use_proxy:
+ description:
+ - Flag to control if the lookup will observe HTTP proxy environment variables when present.
+ type: bool
+ required: false
+ default: false
+notes:
+ - Use C(groups/cpm) in C(module_defaults) to set common options used between CPM modules.)
+"""
+
+EXAMPLES = """
+- name: Get the network SNMP Parameters for all interfaces of a WTI device.
+ cpm_interface_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+
+
+- name: Get the network SNMP Parameters for eth0 of a WTI device.
+ cpm_interface_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: false
+ validate_certs: false
+ interface: "eth0"
+"""
+
+RETURN = """
+data:
+ description: The output JSON returned from the commands sent
+ returned: always
+ type: complex
+ contains:
+ snmpaccess:
+ description: Current k/v pairs of SNMP info for the WTI device after module execution.
+ returned: always
+ type: dict
+ sample: {"snmpaccess": [{"eth0": {"ietf-ipv4":
+ [{"enable": 0, "users": [{"index": "1", "username": "test10", "authpriv": "1", "authpass": "testpass",
+ "authproto": "0", "privpass": "testpass", "privproto": "1"}]}],
+ "ietf-ipv6":
+ [{"enable": 0, "users": [{"index": "1", "username": "test10", "authpriv": "1", "authpass": "testpass",
+ "authproto": "0", "privpass": "testpass", "privproto": "1"}]}]}}]}
+"""
+
+import base64
+import json
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
+from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
+
+
+def run_module():
+ # define the available arguments/parameters that a user can pass to
+ # the module
+ module_args = dict(
+ cpm_url=dict(type='str', required=True),
+ cpm_username=dict(type='str', required=True),
+ cpm_password=dict(type='str', required=True, no_log=True),
+ interface=dict(type='str', default=None, choices=["eth0", "eth1", "ppp0"]),
+ use_https=dict(type='bool', default=True),
+ validate_certs=dict(type='bool', default=True),
+ use_proxy=dict(type='bool', default=False)
+ )
+
+ result = dict(
+ changed=False,
+ data=''
+ )
+
+ module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)
+
+ auth = to_text(base64.b64encode(to_bytes('{0}:{1}'.format(to_native(module.params['cpm_username']), to_native(module.params['cpm_password'])),
+ errors='surrogate_or_strict')))
+
+ if module.params['use_https'] is True:
+ protocol = "https://"
+ else:
+ protocol = "http://"
+
+ fullurl = ("%s%s/api/v2/config/snmpaccess" % (protocol, to_native(module.params['cpm_url'])))
+ ports = module.params['interface']
+
+ if (ports is not None):
+ if isinstance(ports, list):
+ ports = ','.join(to_native(x) for x in ports)
+ fullurl = ("%s?ports=%s" % (fullurl, ports))
+
+ try:
+ response = open_url(fullurl, data=None, method='GET', validate_certs=module.params['validate_certs'], use_proxy=module.params['use_proxy'],
+ headers={'Content-Type': 'application/json', 'Authorization': "Basic %s" % auth})
+
+ except HTTPError as e:
+ fail_json = dict(msg='GET: Received HTTP error for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except URLError as e:
+ fail_json = dict(msg='GET: Failed lookup url for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except SSLValidationError as e:
+ fail_json = dict(msg='GET: Error validating the server''s certificate for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except ConnectionError as e:
+ fail_json = dict(msg='GET: Error connecting to {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+
+ result['data'] = json.loads(response.read())
+
+ module.exit_json(**result)
+
+
+def main():
+ run_module()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_status_info.py b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_status_info.py
new file mode 100644
index 00000000..e76c95d6
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_status_info.py
@@ -0,0 +1,307 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# (C) 2019 Red Hat Inc.
+# Copyright (C) 2019 Western Telematic Inc.
+#
+# GNU General Public License v3.0+
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+#
+# Module to retrieve WTI general status information from WTI OOB and PDU devices.
+# CPM remote_management
+#
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+ANSIBLE_METADATA = {
+ 'metadata_version': '1.1',
+ 'status': ['preview'],
+ 'supported_by': 'community'
+}
+
+DOCUMENTATION = """
+---
+module: cpm_status_info
+version_added: "2.9"
+author:
+ - "Western Telematic Inc. (@wtinetworkgear)"
+short_description: Get general status information from WTI OOB and PDU devices
+description:
+ - "Get temperature general status from WTI OOB and PDU devices"
+options:
+ cpm_url:
+ description:
+ - This is the URL of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_username:
+ description:
+ - This is the Username of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_password:
+ description:
+ - This is the Password of the WTI device to send the module.
+ type: str
+ required: true
+ use_https:
+ description:
+ - Designates to use an https connection or http connection.
+ type: bool
+ required: false
+ default: true
+ validate_certs:
+ description:
+ - If false, SSL certificates will not be validated. This should only be used
+ - on personally controlled sites using self-signed certificates.
+ type: bool
+ required: false
+ default: true
+ use_proxy:
+ description:
+ - Flag to control if the lookup will observe HTTP proxy environment variables when present.
+ type: bool
+ required: false
+ default: false
+notes:
+ - Use C(groups/cpm) in C(module_defaults) to set common options used between CPM modules.)
+"""
+
+EXAMPLES = """
+- name: Get the Status Information for a WTI device
+ cpm_status_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+
+- name: Get the Status Information for a WTI device
+ cpm_status_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: false
+ validate_certs: false
+"""
+
+RETURN = """
+data:
+ description: The output JSON returned from the commands sent
+ returned: always
+ type: complex
+ contains:
+ vendor:
+ description: Identifies WTI device as a WTI device.
+ returned: success
+ type: str
+ sample: "wti"
+ product:
+ description: Current Product Part Number of the WTI device.
+ returned: success
+ type: str
+ sample: "CPM-800-1-CA"
+ totalports:
+ description: Total serial ports of the WTI device.
+ returned: success
+ type: str
+ sample: "9"
+ totalplugs:
+ description: Total Power Outlet plugs of the WTI device.
+ returned: success
+ type: str
+ sample: "8"
+ option1/2:
+ description: Various Identity options of the WTI.
+ returned: success
+ type: str
+ sample: "WPO-STRT-CPM8 / W4G-VZW-CPM8"
+ softwareversion:
+ description: Expanded Firmware version of the WTI device.
+ returned: success
+ type: str
+ sample: "6.60 19 Feb 2020"
+ serialnumber:
+ description: Current Serial number of the WTI device.
+ returned: success
+ type: str
+ sample: "12345678901234"
+ assettag:
+ description: Current Asset Tag of the WTI device.
+ returned: success
+ type: str
+ sample: "ARTE121"
+ siteid:
+ description: Current Site-ID of the WTI device.
+ returned: success
+ type: str
+ sample: "GENEVARACK"
+ analogmodemphonenumber:
+ description: Current Analog Modem (if installed) Phone number of the WTI device.
+ returned: success
+ type: str
+ sample: "9495869959"
+ modeminstalled:
+ description: Identifies if a modem is installed in the WTI device.
+ returned: success
+ type: str
+ sample: "Yes, 4G/LTE"
+ modemmodel:
+ description: Identifies the modem model number (if installed) in the WTI device.
+ returned: success
+ type: str
+ sample: "MTSMC-LVW2"
+ gig_dualphy:
+ description: Identifies dual ethernet port and gigabyte ethernet ports in the WTI device.
+ returned: success
+ type: str
+ sample: "Yes, Yes"
+ cpu_boardprogramdate:
+ description: Current Board and Program date of the WTI device.
+ returned: success
+ type: str
+ sample: "ARM, 4-30-2019"
+ ram_flash:
+ description: Total RAM and FLASH installed in the WTI device..
+ returned: success
+ type: str
+ sample: "512 MB, 128 MB"
+ lineinputcount_rating:
+ description: Identifies total power inlets and their power rating.
+ returned: success
+ type: str
+ sample: "1 , 20 Amps"
+ currentmonitor:
+ description: Identifies if the unit has current monitoring capabilites.
+ returned: success
+ type: str
+ sample: "Yes"
+ keylength:
+ description: Current key length of the WTI device.
+ returned: success
+ type: str
+ sample: "2048"
+ opensslversion:
+ description: Current OpenSSL version running on the WTI device.
+ returned: success
+ type: str
+ sample: "1.1.1d 10 Sep 2019"
+ opensshversion:
+ description: Current OpenSSH running on the WTI device.
+ returned: success
+ type: str
+ sample: "8.2p1"
+ apacheversion:
+ description: Current Apache Web version running on the WTI device.
+ returned: success
+ type: str
+ sample: "2.4.41"
+ apirelease:
+ description: Current Date of the API release of the WTI device.
+ returned: success
+ type: str
+ sample: "March 2020"
+ uptime:
+ description: Current uptime of the WTI device.
+ returned: success
+ type: str
+ sample: "259308.26"
+ energywise:
+ description: Current Energywise version of the WTI device.
+ returned: success
+ type: str
+ sample: "1.2.0"
+ restful:
+ description: Current RESTful version of the WTI device.
+ returned: success
+ type: str
+ sample: "v1.0, v2 (Mar20)"
+ interface_list:
+ description: Current ethernet ports of the WTI device.
+ returned: success
+ type: str
+ sample: "eth0"
+ macaddresses:
+ description: Current mac addresses of the WTI device.
+ returned: always
+ type: dict
+ sample: { "mac": "00-09-9b-02-9a-26" }
+ status:
+ description: Return status after module completion
+ returned: always
+ type: dict
+ sample: { "code": "0", "text": "OK" }
+"""
+
+import base64
+import json
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
+from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
+
+
+def run_module():
+ # define the available arguments/parameters that a user can pass to
+ # the module
+ module_args = dict(
+ cpm_url=dict(type='str', required=True),
+ cpm_username=dict(type='str', required=True),
+ cpm_password=dict(type='str', required=True, no_log=True),
+ use_https=dict(type='bool', default=True),
+ validate_certs=dict(type='bool', default=True),
+ use_proxy=dict(type='bool', default=False)
+ )
+
+ result = dict(
+ changed=False,
+ data=''
+ )
+
+ module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)
+
+ auth = to_text(base64.b64encode(to_bytes('{0}:{1}'.format(to_native(module.params['cpm_username']), to_native(module.params['cpm_password'])),
+ errors='surrogate_or_strict')))
+
+ if module.params['use_https'] is True:
+ protocol = "https://"
+ else:
+ protocol = "http://"
+
+ fullurl = ("%s%s/api/v2/status/status" % (protocol, to_native(module.params['cpm_url'])))
+
+ try:
+ response = open_url(fullurl, data=None, method='GET', validate_certs=module.params['validate_certs'], use_proxy=module.params['use_proxy'],
+ headers={'Content-Type': 'application/json', 'Authorization': "Basic %s" % auth})
+
+ except HTTPError as e:
+ fail_json = dict(msg='GET: Received HTTP error for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except URLError as e:
+ fail_json = dict(msg='GET: Failed lookup url for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except SSLValidationError as e:
+ fail_json = dict(msg='GET: Error validating the server''s certificate for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except ConnectionError as e:
+ fail_json = dict(msg='GET: Error connecting to {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+
+ result['data'] = json.loads(response.read())
+
+ module.exit_json(**result)
+
+
+def main():
+ run_module()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_temp_info.py b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_temp_info.py
new file mode 100644
index 00000000..b8bc8b94
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_temp_info.py
@@ -0,0 +1,187 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# (C) 2019 Red Hat Inc.
+# Copyright (C) 2019 Western Telematic Inc.
+#
+# GNU General Public License v3.0+
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+#
+# Module to retrieve WTI temperature information from WTI OOB and PDU devices.
+# CPM remote_management
+#
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+ANSIBLE_METADATA = {
+ 'metadata_version': '1.1',
+ 'status': ['preview'],
+ 'supported_by': 'community'
+}
+
+DOCUMENTATION = """
+---
+module: cpm_temp_info
+version_added: "2.9"
+author:
+ - "Western Telematic Inc. (@wtinetworkgear)"
+short_description: Get temperature information from WTI OOB and PDU devices
+description:
+ - "Get temperature information from WTI OOB and PDU devices"
+options:
+ cpm_url:
+ description:
+ - This is the URL of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_username:
+ description:
+ - This is the Username of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_password:
+ description:
+ - This is the Password of the WTI device to send the module.
+ type: str
+ required: true
+ use_https:
+ description:
+ - Designates to use an https connection or http connection.
+ type: bool
+ required: false
+ default: true
+ validate_certs:
+ description:
+ - If false, SSL certificates will not be validated. This should only be used
+ - on personally controlled sites using self-signed certificates.
+ type: bool
+ required: false
+ default: true
+ use_proxy:
+ description:
+ - Flag to control if the lookup will observe HTTP proxy environment variables when present.
+ type: bool
+ required: false
+ default: false
+notes:
+ - Use C(groups/cpm) in C(module_defaults) to set common options used between CPM modules.)
+"""
+
+EXAMPLES = """
+- name: Get the Temperature Information of a WTI device
+ cpm_temp_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+
+- name: Get the Temperature Information of a WTI device
+ cpm_temp_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: false
+ validate_certs: false
+"""
+
+RETURN = """
+data:
+ description: The output JSON returned from the commands sent
+ returned: always
+ type: complex
+ contains:
+ temperature:
+ description: Current Temperature of the WTI device after module execution.
+ returned: success
+ type: str
+ sample: "76"
+ format:
+ description: Current Temperature format (Celsius or Fahrenheit) of the WTI device after module execution.
+ returned: success
+ type: str
+ sample: "F"
+ timestamp:
+ description: Current timestamp of the WTI device after module execution.
+ returned: success
+ type: str
+ sample: "2020-02-24T20:54:03+00:00"
+ status:
+ description: Return status after module completion
+ returned: always
+ type: dict
+ sample: { "code": "0", "text": "OK" }
+"""
+
+import base64
+import json
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
+from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
+
+
+def run_module():
+ # define the available arguments/parameters that a user can pass to
+ # the module
+ module_args = dict(
+ cpm_url=dict(type='str', required=True),
+ cpm_username=dict(type='str', required=True),
+ cpm_password=dict(type='str', required=True, no_log=True),
+ use_https=dict(type='bool', default=True),
+ validate_certs=dict(type='bool', default=True),
+ use_proxy=dict(type='bool', default=False)
+ )
+
+ result = dict(
+ changed=False,
+ data=''
+ )
+
+ module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)
+
+ auth = to_text(base64.b64encode(to_bytes('{0}:{1}'.format(to_native(module.params['cpm_username']), to_native(module.params['cpm_password'])),
+ errors='surrogate_or_strict')))
+
+ if module.params['use_https'] is True:
+ protocol = "https://"
+ else:
+ protocol = "http://"
+
+ fullurl = ("%s%s/api/v2/status/temperature" % (protocol, to_native(module.params['cpm_url'])))
+
+ try:
+ response = open_url(fullurl, data=None, method='GET', validate_certs=module.params['validate_certs'], use_proxy=module.params['use_proxy'],
+ headers={'Content-Type': 'application/json', 'Authorization': "Basic %s" % auth})
+
+ except HTTPError as e:
+ fail_json = dict(msg='GET: Received HTTP error for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except URLError as e:
+ fail_json = dict(msg='GET: Failed lookup url for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except SSLValidationError as e:
+ fail_json = dict(msg='GET: Error validating the server''s certificate for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except ConnectionError as e:
+ fail_json = dict(msg='GET: Error connecting to {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+
+ result['data'] = json.loads(response.read())
+
+ module.exit_json(**result)
+
+
+def main():
+ run_module()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_time_config.py b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_time_config.py
new file mode 100644
index 00000000..28e9b971
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_time_config.py
@@ -0,0 +1,410 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# (C) 2019 Red Hat Inc.
+# Copyright (C) 2019 Western Telematic Inc.
+#
+# GNU General Public License v3.0+
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+#
+# Module to execute WTI time date Parameters on WTI OOB and PDU devices.
+# CPM remote_management
+#
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+ANSIBLE_METADATA = {
+ 'metadata_version': '1.1',
+ 'status': ['preview'],
+ 'supported_by': 'community'
+}
+
+DOCUMENTATION = """
+---
+module: cpm_time_config
+version_added: "2.10"
+author:
+ - "Western Telematic Inc. (@wtinetworkgear)"
+short_description: Set Time/Date parameters in WTI OOB and PDU devices.
+description:
+ - "Set Time/Date and NTP parameters parameters in WTI OOB and PDU devices"
+options:
+ cpm_url:
+ description:
+ - This is the URL of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_username:
+ description:
+ - This is the Username of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_password:
+ description:
+ - This is the Password of the WTI device to send the module.
+ type: str
+ required: true
+ use_https:
+ description:
+ - Designates to use an https connection or http connection.
+ type: bool
+ required: false
+ default: true
+ validate_certs:
+ description:
+ - If false, SSL certificates will not be validated. This should only be used
+ - on personally controlled sites using self-signed certificates.
+ type: bool
+ required: false
+ default: true
+ use_proxy:
+ description:
+ - Flag to control if the lookup will observe HTTP proxy environment variables when present.
+ type: bool
+ required: false
+ default: false
+ date:
+ description:
+ - Static date in the format of two digit month, two digit day, four digit year separated by a slash symbol.
+ type: str
+ required: false
+ time:
+ description:
+ - Static time in the format of two digit hour, two digit minute, two digit second separated by a colon symbol.
+ type: str
+ required: false
+ timezone:
+ description:
+ - This is timezone that is assigned to the WTI device.
+ type: int
+ required: false
+ ntpenable:
+ description:
+ - This enables or disables the NTP client service.
+ type: int
+ required: false
+ choices: [ 0, 1 ]
+ ipv4address:
+ description:
+ - Comma separated string of up to two addresses for a primary and secondary IPv4 base NTP server.
+ type: str
+ required: false
+ ipv6address:
+ description:
+ - Comma separated string of up to two addresses for a primary and secondary IPv6 base NTP server.
+ type: str
+ required: false
+ timeout:
+ description:
+ - Set the network timeout in seconds of contacting the NTP servers, valid options can be from 1-60.
+ type: int
+ required: false
+notes:
+ - Use C(groups/cpm) in C(module_defaults) to set common options used between CPM modules.
+"""
+
+EXAMPLES = """
+# Set a static time/date and timezone of a WTI device
+- name: Set known fixed time/date of a WTI device
+ cpm_time_config:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+ date: "12/12/2019"
+ time: "09:23:46"
+ timezone: 5
+
+# Enable NTP and set primary and seconday servers of a WTI device
+- name: Set NTP primary and seconday servers of a WTI device
+ cpm_time_config:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+ timezone: 5
+ ntpenable: 1
+ ipv4address: "129.6.15.28.pool.ntp.org"
+ timeout: 15
+"""
+
+RETURN = """
+data:
+ description: The output JSON returned from the commands sent
+ returned: always
+ type: complex
+ contains:
+ date:
+ description: Current Date of the WTI device after module execution.
+ returned: success
+ type: str
+ sample: "11/14/2019"
+ time:
+ description: Current Time of the WTI device after module execution.
+ returned: success
+ type: str
+ sample: "12:12:00"
+ timezone:
+ description: Current Timezone of the WTI device after module execution.
+ returned: success
+ type: int
+ sample: 5
+ ntp:
+ description: Current k/v pairs of ntp info of the WTI device after module execution.
+ returned: always
+ type: dict
+ sample: {"enable": "0",
+ "ietf-ipv4": {"address": [{"primary": "192.168.0.169","secondary": "12.34.56.78"}]},
+ "ietf-ipv6": {"address": [{"primary": "","secondary": ""}]},
+ "timeout": "4"}
+"""
+
+import base64
+import json
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
+from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
+
+
+def assemble_json(cpmmodule, existing):
+ total_change = 0
+ json_load = ietfstring = ""
+
+ localdate = localtime = localtimezone = localenable = localtimeout = None
+
+ localprimary = []
+ localsecondary = []
+
+ for x in range(0, 2):
+ localprimary.insert(x, None)
+ localsecondary.insert(x, None)
+
+ if cpmmodule.params["date"] is not None:
+ if (existing["date"] != to_native(cpmmodule.params["date"])):
+ total_change = (total_change | 1)
+ localdate = to_native(cpmmodule.params["date"])
+ if cpmmodule.params["time"] is not None:
+ if (existing["time"] != to_native(cpmmodule.params["time"])):
+ total_change = (total_change | 2)
+ localtime = to_native(cpmmodule.params["time"])
+ if cpmmodule.params["timezone"] is not None:
+ if (existing["timezone"] != to_native(cpmmodule.params["timezone"])):
+ total_change = (total_change | 4)
+ localtimezone = to_native(cpmmodule.params["timezone"])
+ if cpmmodule.params["ntpenable"] is not None:
+ if (existing["ntp"]["enable"] != to_native(cpmmodule.params["ntpenable"])):
+ total_change = (total_change | 16)
+ localenable = to_native(cpmmodule.params["ntpenable"])
+ if cpmmodule.params["ipv4address"] is not None:
+ loopcounter = 0
+ portspassed = cpmmodule.params["ipv4address"].split(",")
+ for val in portspassed:
+ if (loopcounter == 0):
+ if (existing["ntp"]["ietf-ipv4"]["address"][0]["primary"] != to_native(val)):
+ total_change = (total_change | 32)
+ localprimary[0] = to_native(val)
+ loopcounter += 1
+ else:
+ if (existing["ntp"]["ietf-ipv4"]["address"][0]["secondary"] != to_native(val)):
+ total_change = (total_change | 32)
+ localsecondary[0] = to_native(val)
+ loopcounter += 1
+ if cpmmodule.params["ipv6address"] is not None:
+ loopcounter = 0
+ portspassed = cpmmodule.params["ipv6address"].split(",")
+ for val in portspassed:
+ if (loopcounter == 0):
+ if (existing["ntp"]["ietf-ipv6"]["address"][0]["primary"] != to_native(val)):
+ total_change = (total_change | 64)
+ localprimary[1] = to_native(val)
+ loopcounter += 1
+ else:
+ if (existing["ntp"]["ietf-ipv6"]["address"][0]["secondary"] != to_native(val)):
+ total_change = (total_change | 64)
+ localsecondary[1] = to_native(val)
+ loopcounter += 1
+ if cpmmodule.params["timeout"] is not None:
+ if (existing["ntp"]["timeout"] != to_native(cpmmodule.params["timeout"])):
+ if ((int(to_native(cpmmodule.params["timeout"])) > 0) and (int(to_native(cpmmodule.params["timeout"])) <= 60)):
+ total_change = (total_change | 8)
+ localtimeout = to_native(cpmmodule.params["timeout"])
+
+ if (total_change > 0):
+ protocol = protocolchanged = 0
+ ietfstring = ""
+
+ if (localdate is not None):
+ ietfstring = '%s"date": "%s"' % (ietfstring, localdate)
+
+ if (localtime is not None):
+ if (len(ietfstring) > 0):
+ ietfstring = '%s,' % (ietfstring)
+ ietfstring = '%s"time": "%s"' % (ietfstring, localtime)
+
+ if (localtimezone is not None):
+ if (len(ietfstring) > 0):
+ ietfstring = '%s,' % (ietfstring)
+ ietfstring = '%s"timezone": "%s"' % (ietfstring, localtimezone)
+
+ if ((localenable is not None) or (localtimeout is not None) or
+ (localprimary[0] is not None) or (localsecondary[0] is not None) or
+ (localprimary[1] is not None) or (localsecondary[1] is not None)):
+ if (len(ietfstring) > 0):
+ ietfstring = '%s,' % (ietfstring)
+ ietfstring = '%s "ntp": {' % (ietfstring)
+
+ if (localenable is not None):
+ ietfstring = '%s"enable": "%s"' % (ietfstring, localenable)
+
+ if (localtimeout is not None):
+ if (len(ietfstring) > 0):
+ ietfstring = '%s,' % (ietfstring)
+ ietfstring = '%s"timeout": "%s"' % (ietfstring, localtimeout)
+
+ if ((localprimary[0] is not None) or (localsecondary[0] is not None)):
+ if ((localenable is not None) or (localtimeout is not None)):
+ ietfstring = '%s,' % (ietfstring)
+ ietfstring = '%s "ietf-ipv4": { "address": [{' % (ietfstring)
+
+ if (localprimary[0] is not None):
+ ietfstring = '%s "primary": "%s"' % (ietfstring, localprimary[0])
+
+ if (localsecondary[0] is not None):
+ if (localprimary[0] is not None):
+ ietfstring = '%s,' % (ietfstring)
+ ietfstring = '%s "secondary": "%s"' % (ietfstring, localsecondary[0])
+
+ # end ietf-ipv4 block
+ ietfstring = '%s }]}' % (ietfstring)
+
+ if ((localprimary[1] is not None) or (localsecondary[1] is not None)):
+ if ((localprimary[0] is not None) or (localsecondary[0] is not None) or
+ (localenable is not None) or (localtimeout is not None)):
+ ietfstring = '%s,' % (ietfstring)
+
+ ietfstring = '%s "ietf-ipv6": { "address": [{' % (ietfstring)
+
+ if (localprimary[1] is not None):
+ ietfstring = '%s "primary": "%s"' % (ietfstring, localprimary[1])
+
+ if (localsecondary[1] is not None):
+ if (localprimary[1] is not None):
+ ietfstring = '%s,' % (ietfstring)
+ ietfstring = '%s "secondary": "%s"' % (ietfstring, localsecondary[1])
+
+ # end ietf-ipv6 block
+ ietfstring = '%s }]}' % (ietfstring)
+ # end ntp block
+ ietfstring = '%s}' % (ietfstring)
+
+ json_load = "{"
+ json_load = '%s%s' % (json_load, ietfstring)
+ json_load = '%s}' % (json_load)
+ else:
+ json_load = None
+ return json_load
+
+
+def run_module():
+ # define the available arguments/parameters that a user can pass to
+ # the module
+ module_args = dict(
+ cpm_url=dict(type='str', required=True),
+ cpm_username=dict(type='str', required=True),
+ cpm_password=dict(type='str', required=True, no_log=True),
+ date=dict(type='str', required=False, default=None),
+ time=dict(type='str', required=False, default=None),
+ timezone=dict(type='int', required=False, default=None),
+ ntpenable=dict(type='int', required=False, default=None, choices=[0, 1]),
+ ipv4address=dict(type='str', required=False, default=None),
+ ipv6address=dict(type='str', required=False, default=None),
+ timeout=dict(type='int', required=False, default=None),
+ use_https=dict(type='bool', default=True),
+ validate_certs=dict(type='bool', default=True),
+ use_proxy=dict(type='bool', default=False)
+ )
+
+ result = dict(
+ changed=False,
+ data=''
+ )
+
+ module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)
+
+ auth = to_text(base64.b64encode(to_bytes('{0}:{1}'.format(to_native(module.params['cpm_username']), to_native(module.params['cpm_password'])),
+ errors='surrogate_or_strict')))
+
+ if module.params['use_https'] is True:
+ protocol = "https://"
+ else:
+ protocol = "http://"
+
+ fullurl = ("%s%s/api/v2/config/timedate" % (protocol, to_native(module.params['cpm_url'])))
+ method = 'GET'
+ try:
+ response = open_url(fullurl, data=None, method=method, validate_certs=module.params['validate_certs'], use_proxy=module.params['use_proxy'],
+ headers={'Content-Type': 'application/json', 'Authorization': "Basic %s" % auth})
+
+ except HTTPError as e:
+ fail_json = dict(msg='GET: Received HTTP error for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except URLError as e:
+ fail_json = dict(msg='GET: Failed lookup url for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except SSLValidationError as e:
+ fail_json = dict(msg='GET: Error validating the server''s certificate for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except ConnectionError as e:
+ fail_json = dict(msg='GET: Error connecting to {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+
+ result['data'] = response.read()
+ payload = assemble_json(module, json.loads(result['data']))
+
+ if module.check_mode:
+ if payload is not None:
+ result['changed'] = True
+ else:
+ if payload is not None:
+ fullurl = ("%s%s/api/v2/config/timedate" % (protocol, to_native(module.params['cpm_url'])))
+ method = 'POST'
+
+ try:
+ response = open_url(fullurl, data=payload, method=method, validate_certs=module.params['validate_certs'], use_proxy=module.params['use_proxy'],
+ headers={'Content-Type': 'application/json', 'Authorization': "Basic %s" % auth})
+
+ except HTTPError as e:
+ fail_json = dict(msg='POST: Received HTTP error for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except URLError as e:
+ fail_json = dict(msg='POST: Failed lookup url for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except SSLValidationError as e:
+ fail_json = dict(msg='POST: Error validating the server''s certificate for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except ConnectionError as e:
+ fail_json = dict(msg='POST: Error connecting to {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+
+ result['changed'] = True
+ result['data'] = json.loads(response.read())
+
+ module.exit_json(**result)
+
+
+def main():
+ run_module()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_time_info.py b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_time_info.py
new file mode 100644
index 00000000..ba03fd8f
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_time_info.py
@@ -0,0 +1,190 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# (C) 2019 Red Hat Inc.
+# Copyright (C) 2019 Western Telematic Inc.
+#
+# GNU General Public License v3.0+
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+#
+# Module to retrieve WTI time date Parameters from WTI OOB and PDU devices.
+# CPM remote_management
+#
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+ANSIBLE_METADATA = {
+ 'metadata_version': '1.1',
+ 'status': ['preview'],
+ 'supported_by': 'community'
+}
+
+DOCUMENTATION = """
+---
+module: cpm_time_info
+version_added: "2.10"
+author:
+ - "Western Telematic Inc. (@wtinetworkgear)"
+short_description: Get Time/Date parameters in WTI OOB and PDU devices
+description:
+ - "Get Time/Date and NTP parameters from WTI OOB and PDU devices"
+options:
+ cpm_url:
+ description:
+ - This is the URL of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_username:
+ description:
+ - This is the Username of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_password:
+ description:
+ - This is the Password of the WTI device to send the module.
+ type: str
+ required: true
+ use_https:
+ description:
+ - Designates to use an https connection or http connection.
+ type: bool
+ required: false
+ default: true
+ validate_certs:
+ description:
+ - If false, SSL certificates will not be validated. This should only be used
+ - on personally controlled sites using self-signed certificates.
+ type: bool
+ required: false
+ default: true
+ use_proxy:
+ description:
+ - Flag to control if the lookup will observe HTTP proxy environment variables when present.
+ type: bool
+ required: false
+ default: false
+notes:
+ - Use C(groups/cpm) in C(module_defaults) to set common options used between CPM modules.)
+"""
+
+EXAMPLES = """
+- name: Get the Time/Date Parameters for a WTI device
+ cpm_time_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: true
+ validate_certs: false
+
+- name: Get the Time/Date Parameters for a WTI device
+ cpm_time_info:
+ cpm_url: "nonexist.wti.com"
+ cpm_username: "super"
+ cpm_password: "super"
+ use_https: false
+ validate_certs: false
+"""
+
+RETURN = """
+data:
+ description: The output JSON returned from the commands sent
+ returned: always
+ type: complex
+ contains:
+ date:
+ description: Current Date of the WTI device after module execution.
+ returned: success
+ type: str
+ sample: "11/14/2019"
+ time:
+ description: Current Time of the WTI device after module execution.
+ returned: success
+ type: str
+ sample: "12:12:00"
+ timezone:
+ description: Current Timezone of the WTI device after module execution.
+ returned: success
+ type: int
+ sample: 5
+ ntp:
+ description: Current k/v pairs of ntp info of the WTI device after module execution.
+ returned: always
+ type: dict
+ sample: {"enable": "0",
+ "ietf-ipv4": {"address": [{"primary": "192.168.0.169","secondary": "12.34.56.78"}]},
+ "ietf-ipv6": {"address": [{"primary": "","secondary": ""}]},
+ "timeout": "4"}
+"""
+
+import base64
+import json
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
+from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
+
+
+def run_module():
+ # define the available arguments/parameters that a user can pass to
+ # the module
+ module_args = dict(
+ cpm_url=dict(type='str', required=True),
+ cpm_username=dict(type='str', required=True),
+ cpm_password=dict(type='str', required=True, no_log=True),
+ use_https=dict(type='bool', default=True),
+ validate_certs=dict(type='bool', default=True),
+ use_proxy=dict(type='bool', default=False)
+ )
+
+ result = dict(
+ changed=False,
+ data=''
+ )
+
+ module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)
+
+ auth = to_text(base64.b64encode(to_bytes('{0}:{1}'.format(to_native(module.params['cpm_username']), to_native(module.params['cpm_password'])),
+ errors='surrogate_or_strict')))
+
+ if module.params['use_https'] is True:
+ protocol = "https://"
+ else:
+ protocol = "http://"
+
+ fullurl = ("%s%s/api/v2/config/timedate" % (protocol, to_native(module.params['cpm_url'])))
+
+ try:
+ response = open_url(fullurl, data=None, method='GET', validate_certs=module.params['validate_certs'], use_proxy=module.params['use_proxy'],
+ headers={'Content-Type': 'application/json', 'Authorization': "Basic %s" % auth})
+
+ except HTTPError as e:
+ fail_json = dict(msg='GET: Received HTTP error for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except URLError as e:
+ fail_json = dict(msg='GET: Failed lookup url for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except SSLValidationError as e:
+ fail_json = dict(msg='GET: Error validating the server''s certificate for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except ConnectionError as e:
+ fail_json = dict(msg='GET: Error connecting to {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+
+ result['data'] = json.loads(response.read())
+
+ module.exit_json(**result)
+
+
+def main():
+ run_module()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_user.py b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_user.py
new file mode 100644
index 00000000..8a3fbfbd
--- /dev/null
+++ b/collections-debian-merged/ansible_collections/wti/remote/plugins/modules/cpm_user.py
@@ -0,0 +1,355 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# (C) 2018 Red Hat Inc.
+# Copyright (C) 2018 Western Telematic Inc.
+#
+# GNU General Public License v3.0+
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+#
+# Module to execute CPM User Commands on WTI OOB and PDU devices.
+# CPM remote_management
+#
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+ANSIBLE_METADATA = {
+ 'metadata_version': '1.1',
+ 'status': ['preview'],
+ 'supported_by': 'community'
+}
+
+DOCUMENTATION = """
+---
+module: cpm_user
+version_added: "2.7"
+author: "Western Telematic Inc. (@wtinetworkgear)"
+short_description: Get various status and parameters from WTI OOB and PDU devices
+description:
+ - "Get/Add/Edit Delete Users from WTI OOB and PDU devices"
+options:
+ cpm_action:
+ description:
+ - This is the Action to send the module.
+ required: true
+ type: str
+ choices: [ "getuser", "adduser", "edituser", "deleteuser" ]
+ cpm_url:
+ description:
+ - This is the URL of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_username:
+ description:
+ - This is the Basic Authentication Username of the WTI device to send the module.
+ type: str
+ required: true
+ cpm_password:
+ description:
+ - This is the Basic Authentication Password of the WTI device to send the module.
+ type: str
+ required: true
+ use_https:
+ description:
+ - Designates to use an https connection or http connection.
+ required: false
+ default: true
+ type: bool
+ validate_certs:
+ description:
+ - If false, SSL certificates will not be validated. This should only be used
+ - on personally controlled sites using self-signed certificates.
+ type: bool
+ required: false
+ default: true
+ use_proxy:
+ description: Flag to control if the lookup will observe HTTP proxy environment variables when present.
+ type: bool
+ required: false
+ default: false
+ user_name:
+ description:
+ - This is the User Name that needs to be create/modified/deleted
+ type: str
+ required: true
+ user_pass:
+ description:
+ - This is the User Password that needs to be create/modified/deleted
+ - If the user is being Created this parameter is required
+ type: str
+ required: false
+ user_accesslevel:
+ description:
+ - This is the access level that needs to be create/modified/deleted
+ - 0 View, 1 User, 2 SuperUser, 3 Administrator
+ type: int
+ required: false
+ choices: [ 0, 1, 2, 3 ]
+ user_accessssh:
+ description:
+ - If the user has access to the WTI device via SSH
+ - 0 No , 1 Yes
+ type: int
+ required: false
+ choices: [ 0, 1 ]
+ user_accessserial:
+ description:
+ - If the user has access to the WTI device via Serial ports
+ - 0 No , 1 Yes
+ type: int
+ required: false
+ choices: [ 0, 1 ]
+ user_accessweb:
+ description:
+ - If the user has access to the WTI device via Web
+ - 0 No , 1 Yes
+ type: int
+ required: false
+ choices: [ 0, 1 ]
+ user_accessapi:
+ description:
+ - If the user has access to the WTI device via RESTful APIs
+ - 0 No , 1 Yes
+ type: int
+ required: false
+ choices: [ 0, 1 ]
+ user_accessmonitor:
+ description:
+ - If the user has ability to monitor connection sessions
+ - 0 No , 1 Yes
+ type: int
+ required: false
+ choices: [ 0, 1 ]
+ user_accessoutbound:
+ description:
+ - If the user has ability to initiate Outbound connection
+ - 0 No , 1 Yes
+ type: int
+ required: false
+ choices: [ 0, 1 ]
+ user_portaccess:
+ description:
+ - If AccessLevel is lower than Administrator, which ports the user has access
+ type: str
+ required: false
+ user_plugaccess:
+ description:
+ - If AccessLevel is lower than Administrator, which plugs the user has access
+ type: str
+ required: false
+ user_groupaccess:
+ description:
+ - If AccessLevel is lower than Administrator, which Groups the user has access
+ type: str
+ required: false
+ user_callbackphone:
+ description:
+ - This is the Call Back phone number used for POTS modem connections
+ type: str
+ required: false
+ """
+
+EXAMPLES = """
+# Get User Parameters
+- name: Get the User Parameters for the given user of a WTI device
+ cpm_user:
+ cpm_action: "getuser"
+ cpm_url: "rest.wti.com"
+ cpm_username: "restuser"
+ cpm_password: "restfuluserpass12"
+ use_https: true
+ validate_certs: true
+ user_name: "usernumberone"
+
+# Create User
+- name: Create a User on a given WTI device
+ cpm_user:
+ cpm_action: "adduser"
+ cpm_url: "rest.wti.com"
+ cpm_username: "restuser"
+ cpm_password: "restfuluserpass12"
+ use_https: true
+ validate_certs: false
+ user_name: "usernumberone"
+ user_pass: "complicatedpassword"
+ user_accesslevel: 2
+ user_accessssh: 1
+ user_accessserial: 1
+ user_accessweb: 0
+ user_accessapi: 1
+ user_accessmonitor: 0
+ user_accessoutbound: 0
+ user_portaccess: "10011111"
+ user_plugaccess: "00000111"
+ user_groupaccess: "00000000"
+
+# Edit User
+- name: Edit a User on a given WTI device
+ cpm_user:
+ cpm_action: "edituser"
+ cpm_url: "rest.wti.com"
+ cpm_username: "restuser"
+ cpm_password: "restfuluserpass12"
+ use_https: true
+ validate_certs: false
+ user_name: "usernumberone"
+ user_pass: "newpasswordcomplicatedpassword"
+
+# Delete User
+- name: Delete a User from a given WTI device
+ cpm_user:
+ cpm_action: "deleteuser"
+ cpm_url: "rest.wti.com"
+ cpm_username: "restuser"
+ cpm_password: "restfuluserpass12"
+ use_https: true
+ validate_certs: true
+ user_name: "usernumberone"
+"""
+
+RETURN = """
+data:
+ description: The output JSON returned from the commands sent
+ returned: always
+ type: str
+"""
+
+import base64
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
+from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
+
+
+def assemble_json(cpmmodule):
+ json_load = '{"users":{"username": "%s"' % to_native((cpmmodule.params["user_name"]))
+
+ # for Adding there must be a password present
+ if cpmmodule.params["user_pass"] is not None and (len(cpmmodule.params["user_pass"]) > 0):
+ json_load = '%s,"newpasswd": "%s"' % (json_load, to_native(cpmmodule.params["user_pass"]))
+ if cpmmodule.params["user_accesslevel"] is not None:
+ json_load = '%s,"accesslevel": %s' % (json_load, to_native(cpmmodule.params["user_accesslevel"]))
+ if cpmmodule.params["user_portaccess"] is not None:
+ json_load = '%s,"portaccess": %s' % (json_load, to_native(cpmmodule.params["user_portaccess"]))
+ if cpmmodule.params["user_plugaccess"] is not None:
+ json_load = '%s,"plugaccess": %s' % (json_load, to_native(cpmmodule.params["user_plugaccess"]))
+ if cpmmodule.params["user_groupaccess"] is not None:
+ json_load = '%s,"groupaccess": %s' % (json_load, to_native(cpmmodule.params["user_groupaccess"]))
+ if cpmmodule.params["user_accessserial"] is not None:
+ json_load = '%s,"accessserial": %s' % (json_load, to_native(cpmmodule.params["user_accessserial"]))
+ if cpmmodule.params["user_accessssh"] is not None:
+ json_load = '%s,"accessssh": %s' % (json_load, to_native(cpmmodule.params["user_accessssh"]))
+ if cpmmodule.params["user_accessweb"] is not None:
+ json_load = '%s,"accessweb": %s' % (json_load, to_native(cpmmodule.params["user_accessweb"]))
+ if cpmmodule.params["user_accessoutbound"] is not None:
+ json_load = '%s,"accessoutbound": %s' % (json_load, to_native(cpmmodule.params["user_accessoutbound"]))
+ if cpmmodule.params["user_accessapi"] is not None:
+ json_load = '%s,"accessapi": %s' % (json_load, to_native(cpmmodule.params["user_accessapi"]))
+ if cpmmodule.params["user_accessmonitor"] is not None:
+ json_load = '%s,"accessmonitor": %s' % (json_load, to_native(cpmmodule.params["user_accessmonitor"]))
+ if cpmmodule.params["user_callbackphone"] is not None:
+ json_load = '%s,"callbackphone": "%s"' % (json_load, to_native(cpmmodule.params["user_callbackphone"]))
+
+ json_load = '%s}}' % (json_load)
+
+ return json_load
+
+
+def run_module():
+
+ module_args = dict(
+ cpm_action=dict(choices=['getuser', 'adduser', 'edituser', 'deleteuser'], required=True),
+ cpm_url=dict(type='str', required=True),
+ cpm_username=dict(type='str', required=True, no_log=False),
+ cpm_password=dict(type='str', required=True, no_log=True),
+ user_name=dict(type='str', required=True),
+ user_pass=dict(type='str', required=False, default=None, no_log=True),
+ user_accesslevel=dict(type='int', required=False, default=None, choices=[0, 1, 2, 3]),
+ user_accessssh=dict(type='int', required=False, default=None, choices=[0, 1]),
+ user_accessserial=dict(type='int', required=False, default=None, choices=[0, 1]),
+ user_accessweb=dict(type='int', required=False, default=None, choices=[0, 1]),
+ user_accessapi=dict(type='int', required=False, default=None, choices=[0, 1]),
+ user_accessmonitor=dict(type='int', required=False, default=None, choices=[0, 1]),
+ user_accessoutbound=dict(type='int', required=False, default=None, choices=[0, 1]),
+ user_portaccess=dict(type='str', required=False, default=None),
+ user_plugaccess=dict(type='str', required=False, default=None),
+ user_groupaccess=dict(type='str', required=False, default=None),
+ user_callbackphone=dict(type='str', required=False, default=None),
+ use_https=dict(type='bool', default=True),
+ validate_certs=dict(type='bool', default=True),
+ use_proxy=dict(type='bool', default=False)
+ )
+
+ result = dict(
+ changed=False,
+ data=''
+ )
+
+ module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)
+
+ if module.check_mode:
+ return result
+
+ auth = to_text(base64.b64encode(to_bytes('{0}:{1}'.format(to_native(module.params['cpm_username']), to_native(module.params['cpm_password'])),
+ errors='surrogate_or_strict')))
+
+ if module.params['use_https'] is True:
+ protocol = "https://"
+ else:
+ protocol = "http://"
+
+ payload = None
+ if (module.params['cpm_action'] == 'getuser'):
+ fullurl = ("%s%s/api/v2/config/users?username=%s" % (protocol, to_native(module.params['cpm_url']), to_native(module.params['user_name'])))
+ method = 'GET'
+ elif (module.params['cpm_action'] == 'adduser'):
+ if module.params["user_pass"] is None or (len(module.params["user_pass"]) == 0):
+ module.fail_json(msg='user_pass not defined.', **result)
+
+ payload = assemble_json(module)
+ fullurl = ("%s%s/api/v2/config/users" % (protocol, to_native(module.params['cpm_url'])))
+ method = 'POST'
+ elif (module.params['cpm_action'] == 'edituser'):
+ payload = assemble_json(module)
+ fullurl = ("%s%s/api/v2/config/users" % (protocol, to_native(module.params['cpm_url'])))
+ method = 'PUT'
+ elif (module.params['cpm_action'] == 'deleteuser'):
+ fullurl = ("%s%s/api/v2/config/users?username=%s" % (protocol, to_native(module.params['cpm_url']), to_native(module.params['user_name'])))
+ method = 'DELETE'
+
+ try:
+ response = open_url(fullurl, data=payload, method=method, validate_certs=module.params['validate_certs'], use_proxy=module.params['use_proxy'],
+ headers={'Content-Type': 'application/json', 'Authorization': "Basic %s" % auth})
+ if (method != 'GET'):
+ result['changed'] = True
+
+ except HTTPError as e:
+ fail_json = dict(msg='Received HTTP error for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except URLError as e:
+ fail_json = dict(msg='Failed lookup url for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except SSLValidationError as e:
+ fail_json = dict(msg='Error validating the server''s certificate for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+ except ConnectionError as e:
+ fail_json = dict(msg='Error connecting to for {0} : {1}'.format(fullurl, to_native(e)), changed=False)
+ module.fail_json(**fail_json)
+
+ result['data'] = to_text(response.read())
+ module.exit_json(**result)
+
+
+def main():
+ run_module()
+
+
+if __name__ == '__main__':
+ main()