summaryrefslogtreecommitdiffstats
path: root/ansible_collections/infinidat/infinibox
diff options
context:
space:
mode:
Diffstat (limited to 'ansible_collections/infinidat/infinibox')
-rw-r--r--ansible_collections/infinidat/infinibox/CHANGELOG.rst49
-rw-r--r--ansible_collections/infinidat/infinibox/FILES.json132
-rw-r--r--ansible_collections/infinidat/infinibox/MANIFEST.json8
-rw-r--r--ansible_collections/infinidat/infinibox/README.md12
-rw-r--r--ansible_collections/infinidat/infinibox/ibox_vars/iboxCICD.yaml166
-rw-r--r--ansible_collections/infinidat/infinibox/ibox_vars/iboxNNNN_example.yaml59
-rw-r--r--ansible_collections/infinidat/infinibox/ibox_vars/vibox.yaml283
-rw-r--r--ansible_collections/infinidat/infinibox/playbooks/configure_array.yml134
-rw-r--r--ansible_collections/infinidat/infinibox/plugins/modules/infini_infinimetrics.py358
-rw-r--r--ansible_collections/infinidat/infinibox/plugins/modules/infini_notification_rule.py41
-rw-r--r--ansible_collections/infinidat/infinibox/plugins/modules/infini_pool.py68
-rw-r--r--ansible_collections/infinidat/infinibox/tests/hacking/infini_infinimetrics_absent.json14
-rw-r--r--ansible_collections/infinidat/infinibox/tests/hacking/infini_infinimetrics_present.json17
-rw-r--r--ansible_collections/infinidat/infinibox/tests/hacking/infini_notification_rule_absent_1521.json9
-rw-r--r--ansible_collections/infinidat/infinibox/tests/hacking/infini_notification_rule_absent_vibox.json9
-rw-r--r--ansible_collections/infinidat/infinibox/tests/hacking/infini_notification_rule_present.json4
-rw-r--r--ansible_collections/infinidat/infinibox/tests/hacking/infini_notification_rule_present_1521.json13
-rw-r--r--ansible_collections/infinidat/infinibox/tests/hacking/infini_notification_rule_present_vibox.json13
-rw-r--r--ansible_collections/infinidat/infinibox/tests/hacking/infini_pool_absent.json9
-rw-r--r--ansible_collections/infinidat/infinibox/tests/hacking/infini_pool_present.json15
-rw-r--r--ansible_collections/infinidat/infinibox/tests/hacking/infini_pool_stat.json9
-rw-r--r--ansible_collections/infinidat/infinibox/tests/hacking/infini_sso_present_1521.json15
-rw-r--r--ansible_collections/infinidat/infinibox/tests/hacking/infini_sso_present_vibox.json15
23 files changed, 1200 insertions, 252 deletions
diff --git a/ansible_collections/infinidat/infinibox/CHANGELOG.rst b/ansible_collections/infinidat/infinibox/CHANGELOG.rst
index b267befe0..afa6e61c6 100644
--- a/ansible_collections/infinidat/infinibox/CHANGELOG.rst
+++ b/ansible_collections/infinidat/infinibox/CHANGELOG.rst
@@ -3,6 +3,54 @@ Change Log
==========
-------------------
+v1.4.5 (2024-04-11)
+-------------------
+
+^^^^^^^^^^^^^^^^^^^^
+Project Enhancements
+^^^^^^^^^^^^^^^^^^^^
+* Update CHANGELOG.
+
+-------------------
+v1.4.4 (2024-04-09)
+-------------------
+
+^^^^^^^^^^^^^^^^^^^^
+Feature Enhancements
+^^^^^^^^^^^^^^^^^^^^
+* psdev-1178: Add infini_infinimetrics module. Allows adding an Infinibox to Infinimetrics.
+* psdev-1108: Extend configure_array example playbook to further demonstrate extensive customization of an Infinibox using Ansible.
+* psdev-1222: Add pool threshold alarm setting support to infini_pool.
+
+^^^^^^^^^
+Bug Fixes
+^^^^^^^^^
+* psdev-1221: Fix infini_notification_rule. Find the correct target ID when using a recipient. The ID cannot be assumed to be 3.
+
+^^^^^^^^^^^^^^^^^^^^
+Project Enhancements
+^^^^^^^^^^^^^^^^^^^^
+* psdev-1188: Refactor CICD to use Infinibox 2503.
+
+-------------------
+v1.4.3 (2024-02-13)
+-------------------
+
+^^^^^^^^^^^^^^^^^^^^
+Project Enhancements
+^^^^^^^^^^^^^^^^^^^^
+* psdev-1150: Update galaxy.yml for publication on Automation Hub.
+
+-------------------
+v1.4.2 (2024-02-12)
+-------------------
+
+^^^^^^^^^^^^^^^^^^^^
+Project Enhancements
+^^^^^^^^^^^^^^^^^^^^
+* psdev-1150: Update galaxy.yml for publication on Automation Hub.
+
+-------------------
v1.4.1 (2024-02-06)
-------------------
@@ -10,7 +58,6 @@ v1.4.1 (2024-02-06)
Feature Enhancements
^^^^^^^^^^^^^^^^^^^^
* Require Ansible >= 2.14.0
-* psdev-1178: Add infini_infinimetrics moduile. Allows add an Infinibox to Infinimetrics.
-------------------
v1.4.0 (2024-02-05)
diff --git a/ansible_collections/infinidat/infinibox/FILES.json b/ansible_collections/infinidat/infinibox/FILES.json
index e5a36d2bf..5553084b9 100644
--- a/ansible_collections/infinidat/infinibox/FILES.json
+++ b/ansible_collections/infinidat/infinibox/FILES.json
@@ -29,24 +29,24 @@
"format": 1
},
{
- "name": "ibox_vars/iboxNNNN_example.yaml",
+ "name": "ibox_vars/vibox.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "888179c43aa1427102ee53ba7d2a1439acd6e4ae3d9c05ce1f71fa373b315af8",
+ "chksum_sha256": "57b80073e4302ae0dd4f5a6f713c81c5fb6d92be5ff7431c028ad728dadef8c9",
"format": 1
},
{
- "name": "ibox_vars/iboxCICD.yaml",
+ "name": "ibox_vars/iboxNNNN_example.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "558e286155b4ecf459ded4d0187b317f69201750e6ec1e09abbb7b247e3f9ad3",
+ "chksum_sha256": "ebb6a3939ac236fcd9b0a738c7ece0f9d5f1dd0a7f78aed17f2e94f00325e596",
"format": 1
},
{
- "name": "ibox_vars/vibox.yaml",
+ "name": "ibox_vars/iboxCICD.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "82cebc7345d44c418a05b7309bc09f69e3e0192da55a19b7ba87f0d7b14be5d0",
+ "chksum_sha256": "abc06a5ab98659985e610a5bc366e0a5ab526204da14292bf090d02af288c545",
"format": 1
},
{
@@ -102,7 +102,7 @@
"name": "playbooks/configure_array.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "dd8225826ce2fcc0f59aeadef0136a962cd8c89fe40ac4001ffaa2d27864a01d",
+ "chksum_sha256": "379d76d103751fa5710763f43205abb4ec44fb530c6332914c09b2afc8d438cc",
"format": 1
},
{
@@ -295,6 +295,13 @@
"format": 1
},
{
+ "name": "plugins/modules/infini_infinimetrics.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "53f10edb20d7292a3b86dc39bdee8475ec78789349144dcccd9cbadc2d636a02",
+ "format": 1
+ },
+ {
"name": "plugins/modules/infini_fibre_channel_switch.py",
"ftype": "file",
"chksum_type": "sha256",
@@ -372,10 +379,10 @@
"format": 1
},
{
- "name": "plugins/modules/infini_notification_rule.py",
+ "name": "plugins/modules/infini_pool.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "28ff855e3ffd038af35d92030c87461bcaff64f3e3c561a868f37800ecba9c33",
+ "chksum_sha256": "9e1aee3951197de002baab7333f96141debcca4db25a0f7f686b0c2203be24e1",
"format": 1
},
{
@@ -414,24 +421,24 @@
"format": 1
},
{
- "name": "plugins/modules/infini_pool.py",
+ "name": "plugins/modules/infini_port.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "09d81af6094917024aa51c39d9ae88367afa337f1944b12e9e0208369924833e",
+ "chksum_sha256": "09ed2ba4508b91df5c8a15d694463e8ea87615acd21e362ae1219b6e4bc1492f",
"format": 1
},
{
- "name": "plugins/modules/infini_port.py",
+ "name": "plugins/modules/infini_sso.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "09ed2ba4508b91df5c8a15d694463e8ea87615acd21e362ae1219b6e4bc1492f",
+ "chksum_sha256": "cbb5879bb0874d71dbf648f13c5a11c5767356cddd29c1239898b38141f4a3b4",
"format": 1
},
{
- "name": "plugins/modules/infini_sso.py",
+ "name": "plugins/modules/infini_notification_rule.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "cbb5879bb0874d71dbf648f13c5a11c5767356cddd29c1239898b38141f4a3b4",
+ "chksum_sha256": "db9a81d5adaf9ccae5a0454d651bf913c5ff361255922b9c22f6a17e990984fe",
"format": 1
},
{
@@ -662,7 +669,7 @@
"name": "tests/hacking/infini_notification_rule_present.json",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "82cebfaa87803000c85ffc84f6134fa88ec952c4fb374c33b0a9d83d9c40137f",
+ "chksum_sha256": "672faf6777e1f2e20330978ae22375d8fc2b964357d000dc628470795c0ac8d1",
"format": 1
},
{
@@ -848,6 +855,83 @@
"format": 1
},
{
+ "name": "tests/hacking/infini_pool_stat.json",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8c7149260706e73ee4b57c9f3ad8f2905f94c82aa7251c4df5dd38b79ed5631b",
+ "format": 1
+ },
+ {
+ "name": "tests/hacking/infini_pool_absent.json",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "f6d5b22375ad150dcfa5927c213f96f206ad0f5feee3e9da31da62a53a793750",
+ "format": 1
+ },
+ {
+ "name": "tests/hacking/infini_sso_present_vibox.json",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "10cc3063ad3a502f739c645c39a6275fc4b7261ed0ee7d955abd016446ae8470",
+ "format": 1
+ },
+ {
+ "name": "tests/hacking/infini_infinimetrics_absent.json",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "ca6acb2d421c89b6e8adb70723c0f937e9eed9ca1f37ab64b38ba43079dc9cab",
+ "format": 1
+ },
+ {
+ "name": "tests/hacking/infini_notification_rule_present_vibox.json",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "672faf6777e1f2e20330978ae22375d8fc2b964357d000dc628470795c0ac8d1",
+ "format": 1
+ },
+ {
+ "name": "tests/hacking/infini_notification_rule_present_1521.json",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "c823038faf18206b0e0ba4c7d9ea60d9147497a52298b34f9d71425ab9905d96",
+ "format": 1
+ },
+ {
+ "name": "tests/hacking/infini_infinimetrics_present.json",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "ed4e2917ed47877b84191b4d8770047f2472a106be92b9b37fb4bb01b141bc83",
+ "format": 1
+ },
+ {
+ "name": "tests/hacking/infini_notification_rule_absent_vibox.json",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "a6f1d3b769dd1e6cfc0458c9d81b2637d3b71503913f5ab9ba42fa87311f7150",
+ "format": 1
+ },
+ {
+ "name": "tests/hacking/infini_notification_rule_absent_1521.json",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "1625dc67e0cdb3f35aa45dde3595334c343b12fcf0e41dd9e114e9b2bc855556",
+ "format": 1
+ },
+ {
+ "name": "tests/hacking/infini_pool_present.json",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "99828cc60970be8032469217543281b94b43d74690e38cecfbfdf9dd3c786589",
+ "format": 1
+ },
+ {
+ "name": "tests/hacking/infini_sso_present_1521.json",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "3ce0b66687616baa0fcbca91a53154a614165c7fb49621447246b89c6fa06d7d",
+ "format": 1
+ },
+ {
"name": "tests/config.yml",
"ftype": "file",
"chksum_type": "sha256",
@@ -911,31 +995,31 @@
"format": 1
},
{
- "name": "README.md",
+ "name": "CHANGELOG.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f3461153b976b6891497f8142af206c6196915b37179b9b57685f9a84bec31d0",
+ "chksum_sha256": "a859e3dfe7533c580b26f093999bbcb04384f43403609273101c12c778dfeff6",
"format": 1
},
{
- "name": ".gitlab-ci.yml",
+ "name": "README.md",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9df779aac7597942f23788f2b7636ec3f56612ffad1f548eb4b4bbed636d3764",
+ "chksum_sha256": "e86f9831c38253c674c88cc417c44e9d5d0761da173e4fddced4fd1226c3f743",
"format": 1
},
{
- "name": ".gitignore",
+ "name": ".gitlab-ci.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "dc9405faf5aa7aa9af717d8a1f4dad063a9103a7857b29d48775702e5ad79f02",
+ "chksum_sha256": "9df779aac7597942f23788f2b7636ec3f56612ffad1f548eb4b4bbed636d3764",
"format": 1
},
{
- "name": "CHANGELOG.rst",
+ "name": ".gitignore",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ddb4872a24789ff8bbfbf443dbd2c6a1802c6a8e11d49681634f1321d6ce0d6e",
+ "chksum_sha256": "dc9405faf5aa7aa9af717d8a1f4dad063a9103a7857b29d48775702e5ad79f02",
"format": 1
}
],
diff --git a/ansible_collections/infinidat/infinibox/MANIFEST.json b/ansible_collections/infinidat/infinibox/MANIFEST.json
index bfe21c7b6..22e703abc 100644
--- a/ansible_collections/infinidat/infinibox/MANIFEST.json
+++ b/ansible_collections/infinidat/infinibox/MANIFEST.json
@@ -2,7 +2,7 @@
"collection_info": {
"namespace": "infinidat",
"name": "infinibox",
- "version": "1.4.3",
+ "version": "1.4.5",
"authors": [
"Infinidat <partners.infi@infinidat.com>",
"David Ohlemacher",
@@ -12,7 +12,7 @@
"tags": [
"array",
"cloud",
- "fiber",
+ "fibre",
"fibre_channel",
"fibrechannel",
"hostpowertools",
@@ -20,6 +20,8 @@
"infinibox",
"infinidat",
"infinihost",
+ "infinimetrics",
+ "infinisafe",
"infinisdk",
"iscsi",
"nas",
@@ -44,7 +46,7 @@
"name": "FILES.json",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e45ed8525f39595d529c89a74a32429e893f5b90ee87289e837086a630df0bbd",
+ "chksum_sha256": "72f3532f993722e91df2a6aafcf96a083a0f8bacc9ec99a580f6881162064806",
"format": 1
},
"format": 1
diff --git a/ansible_collections/infinidat/infinibox/README.md b/ansible_collections/infinidat/infinibox/README.md
index e248972ca..c375d4abf 100644
--- a/ansible_collections/infinidat/infinibox/README.md
+++ b/ansible_collections/infinidat/infinibox/README.md
@@ -12,17 +12,19 @@ All Infindat InfiniBoxes are supported.
## Prerequisites
- Ansible 2.14 or newer
- InfiniSDK 225.1.1 or newer
-- Python 3.6 or newer. This is a prerequisite of Infinidat's infinisdk Python module.
+- Python 3.6 or newer. This is a prerequisite of Infinidat's infiniSDK Python module.
## Modules
- infini_certificate: Configure a SSL certificate.
- infini_cluster: Creates, deletes or modifies host clusters.
- infini_config: Modify an Infinibox configuration.
+- infini_event: Post events.
- infini_export: Creates, deletes or modifies NFS exports.
- infini_export_client: Creates, deletes or modifys NFS client(s) for existing exports.
- infini_fibre_channel_switch: Rename a fibre channel switch.
- infini_fs: Creates, deletes or modifies filesystems.
- infini_host: Creates, deletes or modifies hosts.
+- infini_infinimetrics: Add or remove an Infinibox from an Infinimetrics.
- infini_map: Creates or deletes mappings of volumes to hosts.
- infini_metadata: Creates or deletes metadata for various Infinidat objects.
- infini_network_space: Creates or deletes network spaces.
@@ -32,7 +34,6 @@ All Infindat InfiniBoxes are supported.
- infini_port: Adds or deletes fibre channel or iSCSI ports to hosts.
- infini_sso: Configure a single-sign-on (SSO) certificate.
- infini_user: Creates, deletes or modifies an InfiniBox user.
-- infini_users_repositories: Creates, deletes, or modifies LDAP and AD Infinibox configurations.
- infini_users_repository: Configure Active directory (AD) and Lightweight Directory Access Protocol (LDAP).
- infini_vol: Creates, deletes or modifies a volume.
@@ -60,8 +61,13 @@ Example playbooks are included in the collection:
- test_remove_map_cluster.yml: Removes resouces created by its cohort.
- Playbooks for testing snapshotting:
+ - test_create_snapshots.yml: Creates snapshots.
+ - test_remove_snapshots.yml: Removes created snapshots.
-These two playbooks serve as a reference to the use of the modules. These exercise all modules demonstrating normal usage, idempotency and error conditions. Individual module documentation is available via `ansible-doc`.
+- Playbooks for Infinibox configuration:
+ - configure_array.yml: Configures many aspects of an Infinibox.
+
+The two test playbooks also serve as a reference to the use of the modules. These exercise many modules demonstrating normal usage, idempotency and error conditions. Individual module documentation is available via `ansible-doc`.
### Example Usage
Install the collection and cd into the collection's infi/ directory. Create an ibox yaml file in ibox_vars/. Use the example yaml file as a reference.
diff --git a/ansible_collections/infinidat/infinibox/ibox_vars/iboxCICD.yaml b/ansible_collections/infinidat/infinibox/ibox_vars/iboxCICD.yaml
index 91aeb192e..32b1b7d0c 100644
--- a/ansible_collections/infinidat/infinibox/ibox_vars/iboxCICD.yaml
+++ b/ansible_collections/infinidat/infinibox/ibox_vars/iboxCICD.yaml
@@ -1,11 +1,157 @@
$ANSIBLE_VAULT;1.1;AES256
-62653266666434313135323036623039316436346264346165616364343662643163343835363366
-6234343463353063643666386537613034363837323730370a396338326665333066323635383833
-34363466633839306135386336613931353335306330346330303930303132373231633362353363
-3539373931306362610a613330346535373438643763663365306631336638316234613863323234
-35343636623034646632396235393630356632386236323935613039313266653965646563613938
-37303336343431386566656331613461376533353164376430343631353365306431363034383763
-37383633343562386561306638386635313432623766306336386366666336323663313966353963
-66643931653363316130316331633137333237376331353439356131623735346561636262646332
-33316436643365336639666461633762353833386330643331633931323664643364393835396330
-6364626632306532373263333430336135336238373731646666
+63636339346561366236303937353736633636613333313835636562623362396231643334626536
+6365373633383839393232633163626165363334303932660a643436336338356236623637306535
+34646561643138616532333764336230313835616266313033366531386162396562356662373130
+6663343664623866310a303761383135393366316335363038626365633935336464363265303466
+34306238336364656166356664663233623631376432643238353434313133663362393938623563
+35313263303665393938633566333637373030623438373861376666633263383066333632336666
+62363234303262303462386139326361313038323137653662633762646339623564383665613366
+31633662663634623365333033396332613362653664303564336464333063346164626337616230
+34623938636339386266366261613238366361663639646530623866643836363134346638666662
+32666361366431633533663532353539386537356435386431663034396638633739343831653038
+33373835333132616663363237643336626234393131303330623731353030386665333336313961
+32343139616562633563636539636439373062626438653837383030313438326162653065653339
+39646531626665376131333065653431373061383165653161306132613364366531376132633236
+30383366656237386165663339653032383239653635643466366363633966303864626337356530
+35326130613532666334653332653131333762653139623932393363393932383961383364646436
+39363239346538393661613265623135326534396434643838323235366562653037366462633635
+66643238313930663038643963656131656335356566383336646366626235393834323663646531
+34363033373038353238353230656566306139366665386464636565376330616532393231393331
+63663837343535313939373264383864626530633939383230323730303433366562333230646432
+30396465643737383839613064343961343566313331663731656638653832386264613336623339
+30333237646565323966346436333764616531366530323261646339363465366335303735636534
+61393437663234663363396433306666646538353336303132333165613934666639613162393939
+32393363623564373166363762316232316463353433656139346234346361386335373432353432
+65623632383435643039663461656130636138636231663632386433373833663734396137393866
+33636339346465653964386637336363316461373030623637663535663034366134383235353239
+32373963343533623066373963373963383038316333343038636462376332316335633531353333
+38663966393438656337633931326464363139393933393438376636326432346639386361303938
+64303764663135633864316562646666343439323964356261373834353834343930383038633965
+33636637356335383837663439626439616563393632643039376339636661616234343739383636
+61313834666363663830303564323237363632333563343565366164336431366433313435383938
+35336239313731396237343037366334643238633431376666303264343962376534373761356565
+35393962623631363064653962316565666432646361373339346433303963356463393661326337
+31373864343034663564616633643066383862646137383264636561333638306661386666656135
+38656433626235303564356336303830653162613965383266303534363963376636353235663365
+61306164616464623636633663343232613236386264306334313538343536356337323137323631
+30386630376535333665353937623266393734613432663331316130643138396539326362393032
+31336438366636343431366362316336643739383131396137323438666265636130656636356565
+64663933313239623736616134303664303838643930633063653133383637316238336166336364
+32623863356363336335323063316238396363356261386362613233616565616362633433353931
+39366137343464343964616362353938346237373963636432363338386564373932623032353863
+39666265363237313938656462383164393135373932626436633038636137383762623763323764
+31366166306334633531393839616530316134393939343138366665643536656631613230376564
+34646139303761376562346363616334366138646339643331353964656539363738633365373031
+35373734323866316231316432393136363734353834333330353032326230333166326362306333
+34326233346165613164376464636333356535643433353865383264383661666236646336363036
+32653632666361396633656566636431386631313137636166336365636336373962306566653836
+36383539393035316365326236613138646532626236353065363032623833613462303861663430
+66346138376264316434313564363264616365386434396564336537653230396266346632623663
+66343538396664333164366232616430313534386264356533646233336535656263336230643532
+64343733353166363561303932373963303636376431656262376132356561376530346161643338
+61323035366463373561316264373537316133386265646132326263343137626237336537633530
+36396133303262623164393631373164313134663662643763386163323362303130656138326363
+64396362313661323065306664373130663336613835306138613235363661303962643034313034
+64386464626334393561623564653035363534333130346663623837346438373861396364303066
+63656663633536316465306561316336653233333163346563323438386637613830316537626330
+63623937303137653264363932633939663263386465346162396565633533353333333966623132
+33313164663162376138336335303032666231646238666464616162393032643436613835376235
+31656537633835646330396539316634663161386531353035333439626262613631663230336132
+35313831303766663066363136653266343939353438613563616438396135396230613437336531
+61373461346534353931376339363265353033643537393332316563353330373935353263663136
+37303735643739373338653930323638326236386463323561616566323330646165363432383963
+39336331353466373938306536356462363331373333663861313932653966383165613234396461
+63346561643863393130316635336533346630383561346231326663333531623231646338313664
+30366665643039346337333765393334376131373634633462643666643837393635303838336261
+30323737363335656363613830626439666533613362306335363063623030303232363363633236
+61316431623434326162663232306561393563306134643961626232666361326634636365613964
+37346662633839623564323661613261393532356665653265343865633837633637376131373165
+34346532646537623865383361343338353436326438666433666232316466303230663731653664
+66393836636534323833313030333531353463383435633733646464303036323865666131363433
+66396533323766383832386464363735313833633866383733636131323831363034643437303335
+30316631643333393662323465336634326564346238663236353964376432323461616632303035
+30616164626436333933326534333262356461663164313831313161333261623766333463336333
+65623733393435393232643635646163393665353131303266316636386165323437633261643939
+64656234356138643430336536646162343162303030343961313036623535316136633832626264
+36303262653139626364373634663737336633346536623534626333613033353163346461386334
+66316539313731633431336531323134373164386366386631346166396666623834663932323334
+37383430616561616662376466633137396437626437646135393063383336623261393336396563
+61316265326237363165363139323936313132626164636437613361633934396562306236353832
+62663439646366303766613462346636313838623735653564383838636439343030353435346432
+61323130333964353235383736663663653635373236393162643730623765633538383231373863
+37356535633865303061343430613438323337316565663737316432353634313632373830316331
+65663737626330313734653262323339306331346165393933303462643765356630623031353465
+33396231636436666137336261393537633734383531663962353234313366623135653061376531
+63643334376361653162366637393762373964666664383939386536396265373930386263646365
+33383863386365656538663535646336353735613061376632376238666339346138353038313531
+30633934303538343263613438623330326633663833656537386361653233623362613737363061
+36313061323561636464313938363563643633366235396262613035633261353738303964393230
+63313932303631363836643038313435366431313261656664353535386136386165393031636338
+61663331333938663533633365343466336366303864393666636461663564653831376464623830
+31363464623765353263333763613764663938336564633437386331303438326266323539336533
+61373462303934373563646131626562316262383134353765656639623964343939396330633133
+64626565323738396133326632303566633638623564643630303331613464653635663837343363
+36633938373234316337356363363663363338653836613766363934356631373464333531396630
+62333335363835343938613161323737333864653630333733356332633561343261623239343233
+34376537656532346563656134626437343561376266663063393135333330623530353164633839
+31353562616538303331616534363435616639373966643466316135643765653063356463306330
+36303132343537353963363564346531393134383264646336396330313139633930383063346366
+34643466323466363338613538323234393262613663383862303638363062396462336135353865
+31336163346330316562656336326632353366373037636665643031656639396132643466663635
+33383638383265636535306537343039363439663233346364633062353462336332636261636330
+61323661356139383333643236376463653137663838383730313833613332393633373535396563
+31346461646338376330653839373838643631666662323739373333326435363434336665626435
+63623033356239393733393162613330656539316633396362393237653937343834643864643063
+35313039613237356362616438646663316635313635363639313762323765366563366233316330
+35356438333735646238323637323137666165373332616263346331323966303561333365633064
+39623163363134646163313439663461323235633834343365383962313665393031313938363935
+34646663343539313835376433616538373433303138396338383565343932306634643361343337
+39613230313532343662316635333934663737643362303530636131313031633664383065336366
+35303834336532623463393561633631363866353736626462363134653439333161323738366232
+34636330346635303764616265353036383838613865393939333631633236363836326635323430
+34396565333935316436663236383939303666383634336333613639663164316239353562383936
+39373139316664633231353732383431326235386237666134323133363930303033646532383537
+30666163323461313661333465393230656535393664656561306135323862383634343065353339
+63386638643464653836363236613332343034343165623832636633313064643361303138353537
+61343836633231356232373138623763633531353564326462393136313664393064396338323461
+66383031613638313633623037303435383731396361616231313839323163646130643238353831
+31323839643162663862623434356663356430663166383161363062343934383833343462373835
+35333636613837323839613130373330313532366363323762366439663431633331336561386433
+62376130646538626232626431393731376633653031663730623737656139646362333030303730
+39623761353861623837323032633631336534623036393966383665383739386138326461383833
+61333361373232373930333664336637356233396164313632616662333335316532313730646163
+35366530666431623232313638306562623764313963306165333135613931343337663734373065
+30623737623935376432633835373939663964383733326234333266353362356238653465613164
+64646366346233656433653036646537303434366464393737396532303364313636363235663063
+34646634636136613239353761356465333439653236633831373032363562386231376333313161
+34373033343737383962653530356530366633613564623936353566636438653666326563646465
+30633632363230303563626465656562623466336534323163303366303839333965666238336465
+36373830636530633535323137316162306665656632323639623637326436373137653065323761
+34356163393539383266663566623631646439313135653536373838613237343832363065656332
+66633833393231356365353962396134323162303963373464363963306437326662303337373030
+32323338313333653065613930346661386136663261633639356234373431646362316361323235
+62346232643233653237353635323033343366303930366666643162353737613739316231623863
+64366239666564643830656564303236663130633434633239643461666433316262393230663737
+33316232613038363436336638616233663131333731333034313932373662336265306635656236
+34646238653835393066376636643739346634613832656138366433353631356563316130313162
+38356136646535363566383332666463343231336164663438656366353765393537353764306266
+62323665356563613435376366633637373934356531316161653464323562623132613565396132
+66333738633366613036656262353935616661313661636166626666663065633337376534393161
+36653130623334363661663132396434366434613565613865336665303130326239343165366362
+31343763643738333833343338666136386335643135663732636463356439373833386462643264
+32316136613730643035643139323630316330336563306165636161636235306233643564643164
+38336436636265663733336164326331373666323366663134663331656530363034393231303339
+35653361633034366264346537386239353236396432623635636232646332633731663537353535
+34663666393761353733626563316538346364356662313135346130393536346638393136643133
+64666235343965393038333662623365373563306234313435323639363563663232363532343838
+38323536393236383339613064383964643732643932376134333863333830633232646632363134
+62313534396538633630306164646461656462346661393333626365626435636361326164376438
+33663638326330643238646432356161306639366230306230616134323936396132653539306232
+61316132373933643166663933333339633036323663613432353163663436303561623035656436
+35656564363437626437653630306436386335626632636164653037353463326366373032663266
+39666162343438353463353763356135333636303033643764626266643932353663613233383433
+36663435396536326433383664666336306639376639656661663634373933636561356538646234
+66653763393338663134613036366464346664663966306236613539623764653932313237316330
+36303530386230636430646165646531663131396562393638316261373066616237656330383639
+32626337613231376430623832336439303933333962343339356139343264646339663461313834
+62623838336533636334
diff --git a/ansible_collections/infinidat/infinibox/ibox_vars/iboxNNNN_example.yaml b/ansible_collections/infinidat/infinibox/ibox_vars/iboxNNNN_example.yaml
index d4ef26691..9fa9eaf70 100644
--- a/ansible_collections/infinidat/infinibox/ibox_vars/iboxNNNN_example.yaml
+++ b/ansible_collections/infinidat/infinibox/ibox_vars/iboxNNNN_example.yaml
@@ -4,11 +4,66 @@
# - $ ansible-vault encrypt <file>
#
# Any value for auto_prefix may be used. auto_prefix is used in every resource created by
-# the example playbooks, making resources easy to find.
+# the example playbooks, making example resources easy to find.
auto_prefix: "PSUS_ANSIBLE_"
user: "user"
-password: "password"
+password: "redacted"
system: "iboxNNNN"
+# Variables used by infini_infinimetrics module:
+ibox_serial: 30368
+ibox_url: 172.20.68.167
+ibox_readonly_user: david-ro
+ibox_readonly_password: redacted
+ibox_readonly_email: user@infinidat.com
+imx_system: infinimetrics
+imx_user: IMX_ADMIN
+imx_password: redacted
+
+# Variables used by infini_sso module
sso_signing_certificate: "signing cert in one single line with the begin and end lines removed" # Used by configure_array playbook
+
+# Other variables
+pool_size: 10GB
+pool_vsize: 11GB
+dataset_default_provisioning: THIN
+use_base2_units: true
+table_export_limit: 3000
+admin_user_name: admin
+admin_user_password: redacted
+admin_user_email: dev.mgmt@infinidat.com
+pool_admin_user_name: Commvault
+pool_admin_user_password: redacted
+pool_admin_user_email: user@infinidat.com
+ldap_name: PSUS_ANSIBLE_ad
+setup_alerting_emails: ["user@infinidat.com"]
+prod_alerting_emails: ["user@infinidat.com"]
+alerting_event_levels: ["INFO", "WARNING", "ERROR", "CRITICAL"]
+alerting_includes: []
+alerting_excludes: ["EVENT_FLOOD", "USER_LOGIN_SUCCESS", "USER_LOGGED_OUT"]
+syslogs: # A list of syslog dictionaries
+ - target_name: syslog1_target
+ rule_name: syslog1
+ protocol: SYSLOG
+ host: 172.31.88.158
+ port: 514
+ facility: LOCAL7
+ transport: UDP
+ post_test: true # Not a real test if using UDP
+ - target_name: syslog2_target
+ rule_name: syslog2
+ protocol: SYSLOG
+ host: 172.31.88.158
+ port: 515
+ facility: LOCAL7
+ transport: UDP
+ post_test: true
+ - target_name: graylog_target
+ rule_name: graylog
+ protocol: SYSLOG
+ host: 172.31.77.214
+ port: 1514
+ facility: LOCAL7
+ transport: UDP
+ post_test: true
diff --git a/ansible_collections/infinidat/infinibox/ibox_vars/vibox.yaml b/ansible_collections/infinidat/infinibox/ibox_vars/vibox.yaml
index 76dc8b5b7..653df3efe 100644
--- a/ansible_collections/infinidat/infinibox/ibox_vars/vibox.yaml
+++ b/ansible_collections/infinidat/infinibox/ibox_vars/vibox.yaml
@@ -1,134 +1,151 @@
$ANSIBLE_VAULT;1.1;AES256
-65633535303262623839393038393634326234376132336138653530616562386437363737666238
-3561386434663132373330653534623364613330323663380a313164353936653430613832623966
-66303131373861386338336638636235326334616435626665363465323634653537343331613465
-3235656431383237650a643630613131306264313062636165393164366361616431303339623236
-64653063626333306466663637343332306634626131666634663035393066383636633563626537
-66663737616435323833653466623231646462336163633363333165646338343166616232356165
-32306166376130396264363561396639353165653664316139653366666638343761336239333235
-61303430343061396262373032666133393334326465373964613638336132623466313666623735
-65396337623963346633356462353732356237616566346132343738323532663139643661623364
-64663638666633343665623438336164643565383362323631356232346338653537663430306566
-34366635623735343439383963313261666131636239373238646261313565373731303365316534
-64316263666366326263636631376232343632346634363532643838653033626636316332346433
-37613632373439633731643531333834373433653663326534316337646361393537616262643137
-61323362316333633630663264373836306339643632393462323536386366346439383562613164
-37353534316137663938653630663639366531386633643335623065366131633730383938393565
-62343638326439663130646236373938623436383161386562346431316330613231663361353938
-38663765333239393866363338656264326164353262363839313433363339666139616537646231
-65376361646561646436306433316266356233306434613232333661386564373532333565373038
-65653463336436316338373338313365346634393437333163353936396666626139333934386137
-36306234663163376131663738643764393537303932383037623534376432376431663738333539
-64396136663964306639393162363931323661376134613739336636613734636338353334383763
-34313266353635623335363266636336663932363261333839383664303163353332656365386439
-62303233643665303730653937363338313139646535313765323961356438633739623762656166
-61376137666236333063653630633537653832333165353565393636326666326534333736393835
-65303436303161316139636366303364316431306162666432376638616464326431326365326461
-36363234396130393661313230616130643131373162396139373766303465656164386433366131
-63306536333930653535373636633137623837396163373061363635653037303435643536636563
-36353531333733333237623065326636383161613633373061323530666662646232613861343439
-66343035326434653837643665323937383636353234653864386232336530303666303363633736
-35316262663438646638383266616434303732636362616332316331386262396632623963343266
-36306563326135396138383231353861646462663265646333393665646636326362336430383736
-66343965373066346433666333366362653363626432316439623535306534653331653330353033
-66643362666433616139316430383062386364646433623432353162656337326661343336376162
-64383933393535646635363232306331613562313164393263343433646464613266343361613866
-65386164393031643537373366633566643961653366336534633831646132623236633934373731
-32656630643638393565336634663234633431303534313865333636613464373063363762373137
-31396564323562663033343664393837313665356165353531633433393266356130363264396162
-62393132383530363236336137313939333561326263386165373631633264303262616236306135
-35343636386666633337353863666566336630373736323563613466356261656630623465633465
-64333632303934383532663962653236646162303864303836666566343331626332663565353433
-34323165396535323566393036653433316337653130633364303166313035363432643965316535
-34313164653962396231646362313537623932633933396637653535393264353165646333373766
-33313466663636666330626236393632366230653533356461303834316434306536376539626463
-32343438646630396434353265643530616664353539666562626563653838323661393831343633
-64393432653233613734623466666135333135626661376362623732653134636332303837666432
-63393733313737656130366335336533323266373135306161653361633065643364623265653735
-32326339666538356361656331313761326532653037353731313331306463663866663961336239
-65323538346161386264633664663435616437326633386630383863633466363163396136353430
-31633338613664346434353339353139663863363066383937663433326536326435313332383636
-39353730376131656431393336323632373937653532663036646565303337613761353537393933
-33393735366239666638383336613632663434653630653936633937353137316466393937616366
-65333531376330346438323766303331653137663535323932336234373533306337313837303763
-38316265386132393435663364393838326631633638336430353533356238643734626239653837
-35626162383935383065343236653465623838646238353635313939363661333033623663613539
-33383665356662353834376464333532353563303465323762653538393637343236626639656133
-38346464393831373538336164333063636439623234316632353738653730613939316561303466
-66663763306432643435376636313666653139346632376663323432616565656437396362613461
-31383263303838363735333135623665343535663732626561616562383564653037326437643831
-32633335376636363034326236663438393761336630666336353365613237653861373737623436
-39656530346336626365316338633635363865383935623934363738653637396132626232616532
-31633064613532346363623537353936663664623037643737376139303961636237363562646338
-30633432626334643161313436623733656166636634323861306364616434333963323966303563
-61363632626535363963313362336632326565383039373834366236313331666437613735353135
-39323138353333666137383965646134656337393432383936626533616564343839373035616536
-30383363653730343637336562633035653335383761313430653765383637363364653331646464
-33396165326163636434356630663432386261353330663962633534666136623363623735346564
-36336635313130336539366262653864316234306337656439633061356533323839383065336639
-65616363383235343931393562313038333430343965383730646165376665663233663635343665
-66303464393963663736333062663235343164393364623539666536663738376563363166363434
-37396530326330333431626231306162663333366665646639623333313565653964666161643431
-33643166323965366532663433613436353938363133643764346337343738363031316461393636
-36333036336438356466303633646165376264303237383461323738663264613630646338353637
-38356439363030643137636235303932353535636666636139326431396330316539356464306666
-39313039663733376535616239646664393464633065333731613637356664333331353430643461
-39343431663936306463396139646133363361616237353765656533663265303963633432333330
-63646632336334643439613033346263306664383561313839356137373134313433623031366134
-64616432636337633432343236663163343732346239313833633066336334356530636438376664
-64383565636233333565373933616262663631656137663231393663666531326538616437663438
-65356465323966616365663136613232316338646462643965393364666263646537376439633637
-36656136303063303565346239623161383232383734376530383031653830643964333937373161
-66306137363666353262306162643432303736396237666136383036386530336163306131613434
-65303964313436383265636465316561306238326435663765616466376637383738613930376231
-39326436306130323665373135636164306135313238383435366563306431663664633261336438
-39613136343466383331386334636566316266396637333233363965633239363965306131333532
-31373933323736336461316163323639316163656336633938326337316364646461343565376166
-31646334373966323931393532333335316430303530373263393633326130333265393630623532
-37323836363761383538326161306539653930373038366364366239353239343666623436616265
-35303662373761353530333435383362636435623932396632383232353833663135303066353736
-62636336343163356638326236633562373834316538376435623839376333326635666331383664
-34636161623065616238613264363336346639623063643630653366373035303639656631353363
-36306162343238656536343238303431306161386465306435313137373464636162643532316462
-35353665383935613433663034323537336566656439323165633638323334313666633138363037
-65663761616263346631333937633635663735366438646631363630316565373964316564306563
-30333737326663343632666133616462373261376262643632636431366365653266306336396630
-32356239356561663863656461316166616133386165613139653463663435303266323761653834
-37373663313839366664643461653361306465653931636535363662656630396239623538633935
-36363837626534613234386431636662303866363764333630656431363063656530393738356561
-63316338366433353564646530326539643330653630636435386339613232326530363662666532
-61376165623065323964393561386335386534646232323936303962363964336233356234383030
-35386137633937336232353830643430363062643266363036333836376335626535373139356330
-66336536633365346162393938393165613264393065303234633930663534633732666339356161
-30623661643430623732636262346666303262653934663038343365323035626533613636373035
-65323539373432386664396161353061653334343638623439393531656538643661326536306561
-66303362333565343238646230306165353434376563636664646462623631626233663762636262
-62313730663634376233316237346665363561356366346534356235383935633665643461633662
-64373336663665616632616331663665373564353565353665666539326232613930623061313738
-38663038363839353464633139626265666535323764366138626362383837343133386435303565
-32643334326437663030373163303565623235383762313161313266336637306335336238303538
-62653833643235303239633730376432633366343531636564386362633534633730353563336166
-63663334643264316530323737303039626434383462343238653965333531313639313763343564
-66643035313063373732616332633635363537626534353731396661313936316431356130653231
-66373630323334376336663066623862323762666336366537666435636232323566393862346133
-65396334333031366137353833376337383466326565613763616366613161316561643433363838
-35333861363735343433343032653330653438343030373734396336643032366339633431383465
-64366431633564633234363261303135343233613436323965616437303933326138373531323239
-38396464306138656533333335303161633562353735313462383731633532626264386636333863
-62366666616530623837663739306432383361396136313230613361633932343465626338323137
-61366536373539376436623537386430636533656630666338323061316161333933643839366430
-35613838613866323239326264656361303762383265666562356231316637646638636364326636
-31373236376331653930666237346363313461636366386665323931663161336633623039373237
-33623364373162316366653462353532356633616231663735396535343336393061386432396134
-39303432396262373931303064653131343535393235323062316232343336346631613563383832
-34353162366239356336663631363030303565623261616235663061666431306234623838633134
-30646164356237393933343837316339376664316236336130393735313536376164333963653166
-35366461613930623539323335306364346439373536316434363930343263663661343166326139
-63383530353139643463356166373231323034343338383333643639396264366633613263616437
-65636466346134316530613765386466613363373865353531326164323832333736336366623166
-64373533343965626635646238386630643431386462633361346165383431646466656539323439
-36386262653735393036663330373364323563393561313739326438363965303637346137636166
-64653036313032313564343335633562353338323464383730323232666230373032643965333362
-39383736313430396338393961616438653834333237373162656532303936363039323062616330
-61396131303963353166343163353436643563336433363235616435386532373830666239323661
-36636265383862613466346335363830343931623766396132393464326464633161
+63613563633331643061333939646432623638396364633162366161666464626637633835363764
+3063306463656534626165656330376362303532613330620a363230343833623539346337393765
+39633465633834373034303032653239396162386137626530633635383039653132306238656333
+3438346535386435630a363839366537636534363039336537653166303032623764646661626238
+38346134323038623334643336396234323335323837393862333366646337333533366266363334
+30333035366334306162343631613137363966333237623664353731383462363136393335323230
+35353137306462343666653461626238653039303165616362383866663539376534343838313437
+36363338323836396561346234366435666538323465653266373932346333653738396365326262
+66653165303864393034376564336131656432323165386435346332633063393062666362623633
+62623033346638306537613663323231636433386666306265313836663162373734616233303938
+62343538636234396364646363656537613332656638356132656461666662613935323863323235
+66663364613565373830613764666538663732373864366639363464343666343439306639623263
+32323131346138626234616433633536366166386137363238653364306531363066373961663661
+66303038313763333330636662393530323462333065353337323361303233343566303366306435
+62336361343634626632333861333838613465313733303735613430393165363062613239643330
+33346231346432666331366263336431643030366538366436626334303630623462383062373863
+66636139303235303430636363663136313565393762656636313835653235343135373235626561
+30313536666164633830303734626464653139626465363862313762653734616265656533373931
+38373638613837646463616233326334326130376239313739313662313730646638383932323036
+34326566323330643035386436316165316538366364376335616531323133333532353962626135
+32613864373261653062303331316336353936356462653632363332656438623166636462343532
+30343736393861656466616131333434333661326663653361353639613162303235306434613536
+37303165663632663534313635663564306238663733396264333061343630316538623132663533
+62653836353239363832373835653164343732663134623637346265306164336139393334346631
+30646634386361643236336634343338653930616330396539626265356138653464303831303833
+33386133336163663835633065353562646231623466616162353866343937623463363363333762
+61313331353334336666366132613063663763623337663962396133366135363936396638656632
+36653730623564343633393235643536663139616261313834373161376464303731313737333661
+39363764663666366631386466653437636135343239633639653336386462636265383533313338
+61623562356231333736383230343638383661346435373037623635303635333839353731316138
+35663866313464363237393065326132663430303565663433376564323738383637656163663531
+64666361613434343832303563376630363264346437343337646663653661393663343161613064
+63316638376463386239363564653666633434353334313832303939366436366332373636313233
+32646136656131333865336666336361633039643631643238653964643839623962626639656530
+61373864363138643332626561373766313064653139666339643235633064643664353435303436
+32336463643139393663333464613633303132316636663532306638343162336233636561613766
+35623062313364303266666432306566303330616536306466383639376162393563333530343363
+65316331376433396331346261333839613334633833646462666638623931653333303261613563
+62336562616161336562336237353036376434376134326461346333303638363035326530626361
+30393436323835366465636231313133373237346133623036623637646364623062646166376561
+37353033333633663461333430623537313632643063623765653563303230653666363465626438
+37666233343634353433313565333562393863333536373665306463363734656130333130366365
+35313032346438643034633930656137326334396330346364626137333332613337656262323038
+39386133333631363862353038363136656561383139316534313138633331373533633538356434
+32663038646466303237363936353162303066313435353232353731643261623836643831333539
+38323335663637323765343365393065623336306630393766656235613738313839613937363963
+62366233393934663836333937343963326432353739306532646638393962636535313938366539
+31306632643236313463346634643763303336323464346533663966656234633164346632343231
+32396366666632626133303364373132653931396563383966336239383136373330383732613730
+37313364643061356131653763326230623362613430346364613762643465386436393435346430
+66613462346635616664373537383364633436626339396336356230376139323230346336323963
+37666439313265643131353438626262653166323437393436326135613661333537383734323164
+38646466333866343931663934623938346364353338663763653131336665623735316233353734
+64396231363666393062626363346562313961333362636361323461666463663530656462303034
+66323463363037376135373936363534386431646264393064303335376135313962356362616236
+64326531353137316539396436366638383130646633343237613065393037623339396533393766
+66653238356465626435663737646665653236653239613733623964633864656138323662306261
+62313537333863343835386236626134386565646334363362626137666465366366313130643232
+33393961393031303539346233663066626532646338646264333765663133393966343034306663
+37313736623636653436656363393930313766306564303965623564633463643539396135353932
+62393435386236323232316433643863623133633763643238613238323466366138353161353239
+36313535353864333866643238346463343065363238386633343062303034356237623133306630
+33383465346331326432336464353265356563383231323538306536636630636564346131666536
+30353436383631343637313639663137386536326334656639653339373339663966383764336637
+36333461306236396362316637356437313332396132373064316565613231343033653732343864
+34613138376361623536336163363532656435343831303933643661343565303864663537306663
+36643961353661626534656532653631363566666537373061393636363665346239643164313766
+66323536386166303035623663333332663765653834316661313430653763643639383466306239
+39323966303363333963333465366162666536653163393330336561356633356134346130383366
+34363064633064653861363664313639326139363062313461636137666438633132306366656635
+62346433323632336566653664623831376265613562373436363765363538623030306334653964
+61636239623464383966356134633935333131666239316630643339663439663631616230656562
+65636135653638393830613439613837613962343133393038346638313565306430316639353764
+64626231373937333864353231643838646363313537386235303531306565643030353038306435
+39383439396632373365333539646564313030613965393534383138613961346134633562643233
+36616564303636633230376237376638376130323463653835303233323138633235313035626230
+32323438326266336132363336326638343133383134376131623735623737336239353939396364
+61313261373664326431386665373336646661653536383334333461316239663565396662616566
+38643334633630363933333662636665356135623036353263356530356530653364356531633032
+34336137306134383332373064653538323039316230383362356230393938363036616336313663
+62353765616666326539323138653664326431616163336335666361373765376364366436616631
+38303533346364626534376333353662376563326530623037396664303964623538326432383762
+39383766323164633437613531626562366432323330306165346431373134656163656536396236
+39353136623865306331333835373133666562623838373734353465613264356334303737306233
+64383536353836626163333664633437323466313466653138313533343639336465373737336666
+65333436333831653030346664333539363261316130666563353765353462633939653939343166
+30306236313563373363363262623164623465393038353530653239633164653236316534303762
+65346662613834323065613664666230623063633563366665373430353261663764656261643763
+35373738633730323733333333313961313165343966373730353566636533316161343034646463
+66616239396263313961383038363135646637313164386539316634336563323837393466633631
+36356665656431303565323532383630393765643734326632636530666439383364633864306361
+30383461633863316335306634353437393763353838626530393162383537383935316564656564
+64303335623062323531653737373735383661353062323833373765653530343362373166396362
+31353563313534326234336662663765656261343565663433386334653939633430643134343336
+32363230373138306565336435636664353863623439633830313739663935303836303130303235
+63636338333662313237353161396539313436376331393235373332313437376134353639643464
+30636335363365336163313038373236633035633362336165616230666664323930323635383665
+65303561623433663734663566643231616333656138373666373732313364313361386530613364
+30303564373336376332303831326236663338366466626139616464363766653237633531346262
+66373130323865386165386535613030306236613464343039663433323237336165663631346335
+61643636393435623231623735313339646334303739386439346333376230633561386139383166
+62663932613234333332306636356538626534653833333661313333363533653338366632333736
+63623239396166376136656365336637626435343530656433386361356538346438653665333265
+37653436616438353739613938623839353435393731633336396462376630306233306163346339
+64633939646132386265643339623364633839653935343765666264656361313066633834643839
+34376439343561646663373966656264363662343632373734396265653364323162356638616634
+33613531333232623939363763643131633164633139336164663633643163393534653465316330
+34653530646637636539333831373032383165616365346533613437643263363531666138386637
+65393036353636386134346431396431616561656435623737343363626131386334616430663165
+36663938353332663931326239646563633839643833663138356131653135666433326563353239
+34386535323333313331643033623739323133343862613264393735353037323766633365356333
+35643731313265613333646234656331343363303939333039363834356661303833383031613365
+66656532343566656335366638636233393837323337646530326334666562646437613235313066
+64646366336337623262653665653431323665393736313634373936666362613030623564646234
+61313838663237656234646234393338623032323235613934333330383232613536653864623834
+31663339323865656663663065363563656133323061333037616163323134616562633561323533
+37313536663961393166306161356536656536323137313035353633343763643763663738343661
+34346664336366303235646634633532623261396439303933326139393161346632313435656435
+66643265333637613930666537373436626337663933346131646431316636373063363932343933
+62663830363466316664313236643438343863346265313565386630646534303735656563363561
+30343565313732626133303638366534306162376165323363336331636439626564346631313661
+34666438323664653939306635323934373432383062396633393464306131346264616533396464
+35353461633364643331326561623137313862313434366331323233376463626135396662336238
+61343835616634316139323435373066623365373334656336643961333361646536626163633837
+32613739336366336261313036613738613034666364653435373164313438306538326239326331
+33616461656334313039333931653935366532303662316533316636373739383536323435343831
+30323039613735633661316662356361616338343932386166633862333830306266373365316133
+33346330373065313064643136396566313136613330386333316363653435383530663262323265
+62363165653232336130303861383639323965636565326562313164356161343231623262333338
+62633331353333323765383430626363333236626233643038633637363039333765623839393835
+35366534393265303564613663656635616462396163383564386235386166376532666466303430
+66646565643034386533616433336436386334643633663839616539623165353136623838356335
+30383264353937343932353839313435333530613363323437353835633861376164303631323537
+31396539666365383236383661333238326535303663643639663762303563366161323762313065
+63396662323165373238313561386562643033326161376263663863616234353766623830306464
+38363931303133336162323636363038303866393665623165323634313065376435353431346231
+35373866636237363166373730353265653562383439613364626435383465393163306337613236
+66343137313663653663343637323765313030343431306262343539386361353061663937363433
+38303337373738333563373266336239646463383332303165643232336237323830323162653766
+38616538636161313862366630636634313334623364313866353135663431666264373631303339
+36656133396639313337363162346233613363623965333634373439643732313035306139356135
+62333763333935666361613038313933393237626264646464653232636133323930323366366639
+62373239616565313065653164333332346165383562353731393435626530386365343035386238
+38633635376334316136383337343832306133663539383739363862313633666237623137316137
+39643731636333316535646238363132306134363236656533316431306430326365313236636261
+35643834613337303038303838303561393166656139396139343130313937623761616431653963
+65623966666237323666313836616232353437303535306563643163613935646463613464353334
+65303930393065353164396263646231373162313039363830353663363234363030323664393865
+62333261316539383336313134663961336337616631613531613239306139363430313839633363
+6435633763313566626635613033636561613532363262336136
diff --git a/ansible_collections/infinidat/infinibox/playbooks/configure_array.yml b/ansible_collections/infinidat/infinibox/playbooks/configure_array.yml
index bee0899d1..c3ab24c20 100644
--- a/ansible_collections/infinidat/infinibox/playbooks/configure_array.yml
+++ b/ansible_collections/infinidat/infinibox/playbooks/configure_array.yml
@@ -4,47 +4,6 @@
- name: Configure an Infinibox Array
hosts: localhost
gather_facts: false
- # vars:
- # - dataset_default_provisioning: THIN
- # - use_base2_units: true
- # - table_export_limit: 3000
- # - admin_user_name: admin
- # - admin_user_password: 123456
- # - admin_user_email: dev.mgmt@infinidat.com
- # - pool_admin_user_name: Commvault
- # - pool_admin_user_password: 123456
- # - pool_admin_user_email: dohlemacher@infinidat.com
- # - ldap_name: PSUS_ANSIBLE_ad
- # - setup_alerting_emails: ["dohlemacher@infinidat.com"]
- # - prod_alerting_emails: ["dohlemacher@infinidat.com"]
- # - alerting_event_levels: ["INFO", "WARNING", "ERROR", "CRITICAL"]
- # - alerting_includes: []
- # - alerting_excludes: ["EVENT_FLOOD", "USER_LOGIN_SUCCESS", "USER_LOGGED_OUT"]
- # - syslogs: # A list of syslog dictionaries
- # - target_name: syslog1_target
- # rule_name: syslog1
- # protocol: SYSLOG
- # host: 172.31.88.158
- # port: 514
- # facility: LOCAL7
- # transport: UDP
- # post_test: true # Not a real test if using UDP
- # - target_name: syslog2_target
- # rule_name: syslog2
- # protocol: SYSLOG
- # host: 172.31.88.158
- # port: 515
- # facility: LOCAL7
- # transport: UDP
- # post_test: true
- # - target_name: graylog_target
- # rule_name: graylog
- # protocol: SYSLOG
- # host: 172.31.77.214
- # port: 1514
- # facility: LOCAL7
- # transport: UDP
- # post_test: true
tasks:
- name: Configuration
ansible.builtin.debug:
@@ -55,7 +14,7 @@
- name: Pause
ansible.builtin.pause:
- seconds: 2
+ seconds: 3
- name: Create temporary setup email notification rule setup_email for addresses {{ setup_alerting_emails }}
infinidat.infinibox.infini_notification_rule:
@@ -293,31 +252,98 @@
password: "{{ password }}"
system: "{{ system }}"
- # - name: TODO by David - Configure Infinimetrics - Add Infinibox
- # ansible.builtin.debug:
- # msg: (9) Add Infinibox to Infinimetrics
+ - name: Configure infinimetrics readonly user
+ infinidat.infinibox.infini_user:
+ user_name: "{{ ibox_readonly_user }}"
+ user_email: "{{ ibox_readonly_email }}"
+ user_password: "{{ admin_user_password }}"
+ user_role: "read_only"
+ state: "present"
+ user: "{{ user }}"
+ password: "{{ password }}"
+ system: "{{ system }}"
+
+ - name: Remove Infinibox from Infinimetrics
+ infinidat.infinibox.infini_infinimetrics:
+ ibox_serial: "{{ ibox_serial }}"
+ imx_system: "{{ imx_system }}"
+ imx_user: "{{ imx_user }}"
+ imx_password: "{{ imx_password }}"
+ state: absent
+ user: "{{ user }}"
+ password: "{{ password }}"
+ system: "{{ system }}"
+
+ - name: Remove Infinibox from Infinimetrics again to test idempotency
+ infinidat.infinibox.infini_infinimetrics:
+ ibox_serial: "{{ ibox_serial }}"
+ imx_system: "{{imx_system}}"
+ imx_user: "{{ imx_user }}"
+ imx_password: "{{ imx_password }}"
+ state: absent
+ user: "{{ user }}"
+ password: "{{ password }}"
+ system: "{{ system }}"
+
+ - name: Add Infinibox to Infinimetrics
+ infinidat.infinibox.infini_infinimetrics:
+ ibox_serial: "{{ ibox_serial }}"
+ ibox_url: "{{ ibox_url }}"
+ ibox_readonly_user: "{{ ibox_readonly_user }}"
+ ibox_readonly_password: "{{ ibox_readonly_password }}"
+ imx_system: "{{imx_system}}"
+ imx_user: "{{ imx_user }}"
+ imx_password: "{{ imx_password }}"
+ state: present
+ user: "{{ user }}"
+ password: "{{ password }}"
+ system: "{{ system }}"
+
+ - name: Pause 25 seconds to allow IMX to reflect addition of Infinibox
+ ansible.builtin.pause:
+ seconds: 25
+
+ - name: Add Infinibox to Infinimetrics again to test idempotency
+ infinidat.infinibox.infini_infinimetrics:
+ ibox_serial: "{{ ibox_serial }}"
+ ibox_url: "{{ ibox_url }}"
+ ibox_readonly_user: "{{ ibox_readonly_user }}"
+ ibox_readonly_password: "{{ ibox_readonly_password }}"
+ imx_system: "{{imx_system}}"
+ imx_user: "{{ imx_user }}"
+ imx_password: "{{ imx_password }}"
+ state: present
+ user: "{{ user }}"
+ password: "{{ password }}"
+ system: "{{ system }}"
- name: Create pools
infinidat.infinibox.infini_pool:
- name: "{{ item }}"
- size: "{{ pool_size }}"
- vsize: "{{ pool_size }}"
+ name: "{{ item.name }}"
+ size: "{{ item.size }}"
+ vsize: "{{ item.vsize }}"
+ physical_capacity_warning: "{{ item.physical_capacity_warning }}"
+ physical_capacity_critical: "{{ item.physical_capacity_critical }}"
state: present
user: "{{ user }}"
password: "{{ password }}"
system: "{{ system }}"
loop:
- - pool-a
- - pool-b
- - pool-c
-
- - name: Set up pool admin user for pool
+ - { name: 'CDRFS', size: "{{ pool_size }}", vsize: "{{ pool_vsize }}", physical_capacity_warning: '100', physical_capacity_critical: '100'}
+ - { name: 'HNS', size: "{{ pool_size }}", vsize: "{{ pool_vsize }}", physical_capacity_warning: '80', physical_capacity_critical: '90' }
+ - { name: 'PHYSICAL', size: "{{ pool_size }}", vsize: "{{ pool_vsize }}", physical_capacity_warning: '80', physical_capacity_critical: '90' }
+ - { name: 'POWER', size: "{{ pool_size }}", vsize: "{{ pool_vsize }}", physical_capacity_warning: '80', physical_capacity_critical: '90' }
+ - { name: 'RECLAIM', size: "{{ pool_size }}", vsize: "{{ pool_vsize }}", physical_capacity_warning: '80', physical_capacity_critical: '90' }
+ - { name: 'VIRTUAL', size: "{{ pool_size }}", vsize: "{{ pool_vsize }}", physical_capacity_warning: '80', physical_capacity_critical: '90' }
+ - { name: 'VIRTUAL_REP', size: "{{ pool_size }}", vsize: "{{ pool_vsize }}", physical_capacity_warning: '80', physical_capacity_critical: '90' }
+
+ - name: Set up pool admin user for CDRFS pool
infinidat.infinibox.infini_user:
user_name: "{{ pool_admin_user_name }}"
user_email: "{{ pool_admin_user_email }}"
user_password: "{{ pool_admin_user_password }}"
user_role: "pool_admin"
- user_pool: "pool-a"
+ user_pool: "CDRFS"
state: "present"
user: "{{ user }}"
password: "{{ password }}"
diff --git a/ansible_collections/infinidat/infinibox/plugins/modules/infini_infinimetrics.py b/ansible_collections/infinidat/infinibox/plugins/modules/infini_infinimetrics.py
new file mode 100644
index 000000000..4c9baac5b
--- /dev/null
+++ b/ansible_collections/infinidat/infinibox/plugins/modules/infini_infinimetrics.py
@@ -0,0 +1,358 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+# pylint: disable=invalid-name,use-dict-literal,line-too-long,wrong-import-position,too-many-locals
+
+# Copyright: (c) 2024, Infinidat <info@infinidat.com>
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+"""This module creates or modifies Infinibox registrations on Infinimetrics."""
+
+from __future__ import absolute_import, division, print_function
+
+__metaclass__ = type
+
+DOCUMENTATION = r"""
+---
+module: infini_infinimetrics
+version_added: 2.16.0
+short_description: Create (present state) or remove (absent state) an Infinibox registration on an Infinimetrics.
+description:
+ - Create (present state) or remove (absent state) an Infinibox registration on an Infinimetrics.
+author: David Ohlemacher (@ohlemacher)
+options:
+ ibox_serial:
+ description:
+ - Infinibox serial number.
+ type: str
+ required: true
+ ibox_url:
+ description: Infinibox DNS resolvable hostname or IPv4 address.
+ type: str
+ required: false
+ ibox_readonly_user:
+ description:
+ - Read only Infinibox user name.
+ type: str
+ required: false
+ ibox_readonly_password:
+ description:
+ - Read only Infinibox user password.
+ type: str
+ required: false
+ imx_system:
+ description:
+ - Infinimetrics hostname or IPv4 Address.
+ type: str
+ required: true
+ imx_user:
+ description:
+ - Infinimetrics user name.
+ type: str
+ required: true
+ imx_password:
+ description:
+ - Infinimetrics user password.
+ type: str
+ required: true
+ state:
+ description:
+ - Registers the Infinibox with Infinimetrics, when using state present.
+ - For state absent, the Infinibox is disabled on Infinimetrics and will no longer appear on the Infinimetrics UI.
+ - Existing Infinibox data is not purged from Infinimetrics.
+ - Purging may be executed using the Infinimetrics CLI tool.
+ type: str
+ required: false
+ default: present
+ choices: [ "present", "absent" ]
+extends_documentation_fragment:
+ - infinibox
+"""
+
+EXAMPLES = r"""
+- name: Register IBOX with Infinimetrics
+ infini_infinimetrics:
+ infinimetrics_system: infinimetrics
+ state: present
+ user: admin
+ password: secret
+ system: ibox001
+
+- name: Deregister IBOX from Infinimetrics
+ infini_infinimetrics:
+ infinimetrics_system: infinimetrics
+ state: absent
+ user: admin
+ password: secret
+ system: ibox001
+"""
+
+# RETURN = r''' # '''
+
+import re
+import traceback
+
+from ansible.module_utils.basic import missing_required_lib
+
+try:
+ import requests
+except ImportError:
+ HAS_REQUESTS = False
+ HAS_REQUESTS_IMPORT_ERROR = traceback.format_exc()
+else:
+ HAS_REQUESTS = True
+ HAS_REQUESTS_IMPORT_ERROR = None
+
+from ansible.module_utils.basic import AnsibleModule
+
+from ansible_collections.infinidat.infinibox.plugins.module_utils.infinibox import (
+ api_wrapper,
+ get_system,
+ infinibox_argument_spec,
+)
+
+
+def find_csrfmiddleware_token(response):
+ """Search for csrfmiddlewaretoken in the response lines. Return token or None."""
+ token = None
+ for line_bytes in response.iter_lines():
+ line = str(line_bytes)
+ # Example of line searched for:
+ # <input type="hidden" name="csrfmiddlewaretoken" value="VUe6...m5Nl7y">'
+ result = re.search(r'"csrfmiddlewaretoken" value="(\w+)"', line)
+ if result:
+ token = result.group(1)
+ break
+ return token
+
+
+@api_wrapper
+def imx_login(module, imx_session):
+ """ Log into an IMX (GET and POST) using credentials. """
+ ibox_url = module.params.get('ibox_url')
+ imx_system = module.params.get('imx_system')
+ path = f"https://{imx_system}/auth/login/"
+
+ # Use GET to get a token
+ payload = {
+ 'username': module.params.get('imx_user', None),
+ 'password': module.params.get('imx_password', None),
+ }
+ get_response = imx_session.get(path, data=payload, verify=False)
+ status_code = get_response.status_code
+ if status_code not in [200]:
+ text = get_response.text
+ msg = f"Cannot add Infinibox {ibox_url} to Infinimetrics {imx_system}. Status code: {status_code}. Text returned: {text}"
+ module.fail_json(msg=msg)
+
+ token = find_csrfmiddleware_token(get_response)
+
+ # Use POST provide token
+ data = {
+ 'csrfmiddlewaretoken': token,
+ 'password': module.params.get('imx_password', None),
+ 'username': module.params.get('imx_user', None),
+ }
+ headers = {
+ 'referer': f'https://{module.params.get("imx_system")}',
+ }
+ response = imx_session.post(path, headers=headers, data=data, verify=False)
+ if response.status_code not in [200, 201]:
+ msg = f"Cannot log into Infinimetrics {imx_system}. Status code: {response.status_code}. Text returned: {response.text}"
+ module.fail_json(msg=msg)
+
+
+@api_wrapper
+def imx_system_add(module, imx_session):
+ """ Add an Infinibox to an Infinimetrics using an imx_session """
+ imx_system = module.params.get('imx_system')
+ ibox_readonly_user = module.params.get('ibox_readonly_user')
+ ibox_readonly_password = module.params.get('ibox_readonly_password')
+ ibox_serial = module.params.get('ibox_serial')
+ ibox_url = module.params.get('ibox_url')
+ path = f"https://{imx_system}/system/add/"
+ headers = {
+ 'referer': f'https://{imx_system}/',
+ }
+
+ # Use GET to get a token
+ get_response = imx_session.get(path, headers=headers, verify=False)
+ status_code = get_response.status_code
+ if status_code not in [200]:
+ text = get_response.text
+ msg = f"Cannot add Infinibox {ibox_url} to Infinimetrics {imx_system}. Status code: {status_code}. Text returned: {text}"
+ module.fail_json(msg=msg)
+
+ get_token = find_csrfmiddleware_token(get_response)
+
+ # Use POST provide token
+ data = {
+ 'api_url': ibox_url,
+ 'api_username': ibox_readonly_user,
+ 'api_password': ibox_readonly_password,
+ 'csrfmiddlewaretoken': get_token,
+ }
+ response = imx_session.post(path, headers=headers, data=data, verify=False)
+ status_code = response.status_code
+ text = response.text
+ if status_code not in [200, 201]:
+ msg = f"Cannot add Infinibox {ibox_url} to Infinimetrics {imx_system}. Status code: {status_code}. Text returned: {text}"
+ module.fail_json(msg=msg)
+
+ # Check that the IBOX was added or was previously added.
+ # Search for one of:
+ # - 'The system is already monitored'
+ # - add_progress url
+ if ("The system is already" not in response.text or "monitored" not in response.text) \
+ and (f"/system/{ibox_serial}/add_progress" not in response.text):
+ msg = f"Cannot add Infinibox {ibox_url} to Infinimetrics {imx_system}. Status code: {status_code}. Text returned: {text}"
+ module.fail_json(msg=msg)
+
+ if "add_progress" in response.text:
+ return True # Just added now
+ return False # Previously added
+
+
+@api_wrapper
+def imx_system_delete(module, imx_session):
+ """ Remove an Infinibox from an Infinimetrics using an imx_session """
+ imx_system = module.params.get('imx_system')
+ serial = module.params.get('ibox_serial')
+ ibox_url = module.params.get('ibox_url')
+ path = f"https://{imx_system}/system/{serial}/edit/"
+ headers = {
+ 'referer': f'https://{imx_system}/',
+ }
+
+ # Use GET to get a token
+ get_response = imx_session.get(path, headers=headers, verify=False)
+ status_code = get_response.status_code
+ if status_code not in [200]:
+ text = get_response.text
+ msg = f"Cannot remove Infinibox {ibox_url} from Infinimetrics {imx_system}. Status code: {status_code}. Text returned: {text}"
+ module.fail_json(msg=msg)
+
+ get_token = find_csrfmiddleware_token(get_response)
+
+ path = f"https://{imx_system}/system/{serial}/remove/"
+ headers = {
+ 'X-CSRFToken': get_token,
+ 'referer': f'https://{imx_system}/',
+ }
+ response = imx_session.delete(path, headers=headers, verify=False)
+
+ # Check that the IBOX was removed or was previously removed
+ # In response.return_code, search for 200
+ status_code = response.status_code
+ if status_code not in [200, 201]:
+ text = response.text
+ msg = f"Cannot remove Infinibox {serial} from infinimetrics {imx_system}. Status code: {status_code}, Text returned: {text}"
+ module.fail_json(msg=msg)
+
+
+def handle_present(module):
+ """ Handle the present state parameter """
+ imx_system = module.params.get('imx_system')
+ ibox_url = module.params.get('ibox_url')
+
+ imx_session = requests.session()
+ imx_login(module, imx_session)
+ is_newly_added = imx_system_add(module, imx_session)
+
+ if is_newly_added:
+ msg = f"Infinibox {ibox_url} added to Infinimetrics {imx_system}"
+ changed = True
+ else:
+ msg = f"Infinibox {ibox_url} previously added to Infinimetrics {imx_system}"
+ changed = False
+
+ result = dict(changed=changed, msg=msg)
+ module.exit_json(**result)
+
+
+def handle_absent(module):
+ """ Handle the absent state parameter. """
+ imx_system = module.params.get('imx_system')
+ serial = module.params.get('ibox_serial')
+
+ imx_session = requests.session()
+ imx_login(module, imx_session)
+ imx_system_delete(module, imx_session)
+ result = dict(
+ changed=True,
+ msg=f"Infinibox serial {serial} has been removed from Infinimetrics {imx_system}"
+ )
+ module.exit_json(**result)
+
+
+def execute_state(module):
+ """Handle states"""
+ state = module.params["state"]
+ try:
+ if state == "present":
+ handle_present(module)
+ elif state == "absent":
+ handle_absent(module)
+ else:
+ module.fail_json(msg=f"Internal handler error. Invalid state: {state}")
+ finally:
+ system = get_system(module)
+ system.logout()
+
+
+def verify_params(module, req_params):
+ """ Verify that required params are provided """
+ missing_req_params = []
+ for req_param in req_params:
+ if not module.params[req_param]:
+ missing_req_params.append(req_param)
+ if missing_req_params:
+ state = module.params["state"]
+ msg = f"Cannot handle state {state} due to missing parameters: {missing_req_params}"
+ module.fail_json(msg=msg)
+
+
+def check_options(module): # pylint: disable=too-many-branches
+ """ Check option logic """
+ state = module.params['state']
+
+ if state == 'present':
+ req_params = ["ibox_url", "ibox_readonly_user", "ibox_readonly_password"]
+ verify_params(module, req_params)
+ elif state == 'absent':
+ pass
+ else:
+ module.fail_json(msg=f'Internal handler error. Invalid state: {state}')
+
+
+def main():
+ """ Main """
+ argument_spec = infinibox_argument_spec()
+ argument_spec.update(
+ dict(
+ ibox_serial=dict(required=True),
+ ibox_url=dict(required=False, default=None),
+ ibox_readonly_user=dict(required=False, default=None),
+ ibox_readonly_password=dict(required=False, no_log=True, default=None),
+ imx_system=dict(required=True),
+ imx_user=dict(required=True),
+ imx_password=dict(required=True, no_log=True),
+ state=dict(default="present", choices=["present", "absent"]),
+ )
+ )
+
+ module = AnsibleModule(argument_spec, supports_check_mode=True)
+
+ if not HAS_REQUESTS:
+ module.fail_json(
+ msg=missing_required_lib('requests'),
+ exception=HAS_REQUESTS_IMPORT_ERROR,
+ )
+
+ check_options(module)
+
+ execute_state(module)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/ansible_collections/infinidat/infinibox/plugins/modules/infini_notification_rule.py b/ansible_collections/infinidat/infinibox/plugins/modules/infini_notification_rule.py
index 1916cdb49..c6e30af5d 100644
--- a/ansible_collections/infinidat/infinibox/plugins/modules/infini_notification_rule.py
+++ b/ansible_collections/infinidat/infinibox/plugins/modules/infini_notification_rule.py
@@ -56,6 +56,14 @@ options:
elements: str
required: false
default: []
+ recipient_target_name:
+ description:
+ - When creating a rule using recipients, a notification target is required.
+ - Usually, this target is named "customer-smtp".
+ - If this is not the case, use this variable to specifiy another name.
+ type: str
+ required: false
+ default: customer-smtp
target:
description:
- Notification target
@@ -118,6 +126,23 @@ except ModuleNotFoundError:
@api_wrapper
+def find_recipient_target_name_id(module, system):
+ """ Find the ID of the target by name """
+ target = module.params["recipient_target_name"]
+ path = f"notifications/targets?name={target}&fields=id"
+ api_result = system.api.get(
+ path=path
+ )
+ if len(api_result.get_json()['result']) > 0:
+ result = api_result.get_json()['result'][0]
+ target_id = result['id']
+ else:
+ msg = f"Cannot find an ID for recipient_target_name {target}"
+ module.fail_json(msg=msg)
+ return target_id
+
+
+@api_wrapper
def find_target_id(module, system):
""" Find the ID of the target by name """
target = module.params["target"]
@@ -190,16 +215,14 @@ def create_rule(module):
target_parameters = {
"recipients": recipients
}
- target_id = 3 # Target ID for sending to recipients
+ json_data["target_id"] = find_recipient_target_name_id(module, system) # Target ID for sending to recipients
json_data["target_parameters"] = target_parameters
elif target:
- target_id = find_target_id(module, system)
+ json_data["target_id"] = find_target_id(module, system)
else:
msg = "Neither recipients nor target parameters specified"
module.fail_json(msg=msg)
- json_data["target_id"] = target_id
-
system.api.post(path=path, data=json_data)
@@ -215,6 +238,8 @@ def update_rule(module):
exclude_events = module.params["exclude_events"]
recipients = module.params["recipients"]
target = module.params["target"]
+ rule_id = find_rule_id(module, system)
+ path = f"notifications/rules/{rule_id}"
json_data = {
"name": name,
@@ -227,17 +252,14 @@ def update_rule(module):
target_parameters = {
"recipients": recipients
}
- target_id = 3 # Target ID for sending to recipients
+ json_data["target_id"] = find_recipient_target_name_id(module, system) # Target ID for sending to recipients
json_data["target_parameters"] = target_parameters
elif target:
- target_id = find_target_id(module, system)
+ json_data["target_id"] = find_target_id(module, system)
else:
msg = "Neither recipients nor target parameters specified"
module.fail_json(msg=msg)
- json_data["target_id"] = target_id
- rule_id = find_rule_id(module, system)
- path = f"notifications/rules/{rule_id}"
system.api.put(path=path, data=json_data)
@@ -342,6 +364,7 @@ def main():
"include_events": {"required": False, "default": [], "type": "list", "elements": "str"},
"exclude_events": {"required": False, "default": [], "type": "list", "elements": "str"},
"recipients": {"required": False, "default": [], "type": "list", "elements": "str"},
+ "recipient_target_name": {"required": False, "default": "customer-smtp", "type": "str"},
"target": {"required": False, "type": "str", "default": None},
"state": {"default": "present", "choices": ["stat", "present", "absent"]},
}
diff --git a/ansible_collections/infinidat/infinibox/plugins/modules/infini_pool.py b/ansible_collections/infinidat/infinibox/plugins/modules/infini_pool.py
index 43daa71be..97366a817 100644
--- a/ansible_collections/infinidat/infinibox/plugins/modules/infini_pool.py
+++ b/ansible_collections/infinidat/infinibox/plugins/modules/infini_pool.py
@@ -1,7 +1,7 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
-# pylint: disable=invalid-name,use-dict-literal,line-too-long,wrong-import-position
+# pylint: disable=invalid-name,use-dict-literal,line-too-long,wrong-import-position,too-many-branches
"""This module creates, deletes or modifies pools on Infinibox."""
@@ -59,6 +59,18 @@ options:
required: false
default: yes
type: bool
+ physical_capacity_warning:
+ description:
+ - Capacity, in percent, for a warning notification.
+ required: false
+ type: int
+ default: 80
+ physical_capacity_critical:
+ description:
+ - Capacity, in percent, for a critical notification.
+ required: false
+ type: int
+ default: 90
notes:
- Infinibox Admin level access is required for pool modifications
@@ -123,16 +135,22 @@ def create_pool(module, system):
vsize = module.params['vsize']
ssd_cache = module.params['ssd_cache']
compression = module.params['compression']
+ physical_capacity_warning = module.params['physical_capacity_warning']
+ physical_capacity_critical = module.params['physical_capacity_critical']
if not module.check_mode:
if not size and not vsize:
- pool = system.pools.create(name=name, physical_capacity=Capacity('1TB'), virtual_capacity=Capacity('1TB'))
+ pool = system.pools.create(name=name, physical_capacity=Capacity('1TB'), virtual_capacity=Capacity('1TB'),
+ physical_capacity_warning=physical_capacity_warning, physical_capacity_critical=physical_capacity_critical)
elif size and not vsize:
- pool = system.pools.create(name=name, physical_capacity=Capacity(size), virtual_capacity=Capacity(size))
+ pool = system.pools.create(name=name, physical_capacity=Capacity(size), virtual_capacity=Capacity(size),
+ physical_capacity_warning=physical_capacity_warning, physical_capacity_critical=physical_capacity_critical)
elif not size and vsize:
- pool = system.pools.create(name=name, physical_capacity=Capacity('1TB'), virtual_capacity=Capacity(vsize))
+ pool = system.pools.create(name=name, physical_capacity=Capacity('1TB'), virtual_capacity=Capacity(vsize),
+ physical_capacity_warning=physical_capacity_warning, physical_capacity_critical=physical_capacity_critical)
else:
- pool = system.pools.create(name=name, physical_capacity=Capacity(size), virtual_capacity=Capacity(vsize))
+ pool = system.pools.create(name=name, physical_capacity=Capacity(size), virtual_capacity=Capacity(vsize),
+ physical_capacity_warning=physical_capacity_warning, physical_capacity_critical=physical_capacity_critical)
# Default value of ssd_cache is True. Disable ssd caching if False
if not ssd_cache:
pool.update_ssd_enabled(ssd_cache)
@@ -150,7 +168,7 @@ def update_pool(module, pool):
size = module.params['size']
vsize = module.params['vsize']
- # ssd_cache = module.params['ssd_cache']
+ ssd_cache = module.params['ssd_cache']
compression = module.params['compression']
# Roundup the capacity to mimic Infinibox behaviour
@@ -168,15 +186,29 @@ def update_pool(module, pool):
pool.update_virtual_capacity(virtual_capacity)
changed = True
- # if pool.is_ssd_enabled() != ssd_cache:
- # if not module.check_mode:
- # pool.update_ssd_enabled(ssd_cache)
- # changed = True
+ if pool.is_ssd_enabled() != ssd_cache:
+ if not module.check_mode:
+ pool.update_ssd_enabled(ssd_cache)
+ changed = True
if pool.is_compression_enabled() != compression:
if not module.check_mode:
pool.update_compression_enabled(compression)
- changed = True
+ changed = True
+
+ physical_capacity_critical = module.params.get('physical_capacity_critical')
+ existing_physical_capacity_critical = pool.get_physical_capacity_critical()
+ if physical_capacity_critical != existing_physical_capacity_critical:
+ if not module.check_mode:
+ pool.update_physical_capacity_critical(physical_capacity_critical)
+ changed = True
+
+ physical_capacity_warning = module.params.get('physical_capacity_warning')
+ existing_physical_capacity_warning = pool.get_physical_capacity_warning()
+ if physical_capacity_warning != existing_physical_capacity_warning:
+ if not module.check_mode:
+ pool.update_physical_capacity_warning(physical_capacity_warning)
+ changed = True
if changed:
msg = 'Pool updated'
@@ -206,12 +238,22 @@ def handle_stat(module):
# print('fields: {0}'.format(fields))
free_physical_capacity = fields.get('free_physical_capacity', None)
pool_id = fields.get('id', None)
+ physical_capacity_warning = pool.get_physical_capacity_warning()
+ physical_capacity_critical = pool.get_physical_capacity_critical()
+ physical_capacity = pool.get_physical_capacity()
+ virtual_capacity = pool.get_virtual_capacity()
result = dict(
changed=False,
free_physical_capacity=str(free_physical_capacity),
+ physical_capacity_warning=physical_capacity_warning,
+ physical_capacity_critical=physical_capacity_critical,
+ physical_capacity=str(physical_capacity),
+ virtual_capacity=str(virtual_capacity),
+ ssd_cache=pool.is_ssd_enabled(),
+ compression_enabled=pool.is_compression_enabled(),
id=pool_id,
- msg='Pool stat found'
+ msg='Pool stat found',
)
module.exit_json(**result)
@@ -267,6 +309,8 @@ def main():
vsize=dict(),
ssd_cache=dict(type='bool', default=True),
compression=dict(type='bool', default=True),
+ physical_capacity_warning=dict(type='int', default=80),
+ physical_capacity_critical=dict(type='int', default=90),
)
)
diff --git a/ansible_collections/infinidat/infinibox/tests/hacking/infini_infinimetrics_absent.json b/ansible_collections/infinidat/infinibox/tests/hacking/infini_infinimetrics_absent.json
new file mode 100644
index 000000000..c425191b6
--- /dev/null
+++ b/ansible_collections/infinidat/infinibox/tests/hacking/infini_infinimetrics_absent.json
@@ -0,0 +1,14 @@
+{
+ "ANSIBLE_MODULE_ARGS": {
+ "ibox_serial": "30368",
+
+ "imx_system": "infinimetrics-vc6",
+ "imx_user": "IMX_ADMIN",
+ "imx_password": "nfinidat1",
+
+ "state": "absent",
+ "system": "172.20.68.167",
+ "user": "admin",
+ "password": "123456"
+ }
+}
diff --git a/ansible_collections/infinidat/infinibox/tests/hacking/infini_infinimetrics_present.json b/ansible_collections/infinidat/infinibox/tests/hacking/infini_infinimetrics_present.json
new file mode 100644
index 000000000..c41db9f14
--- /dev/null
+++ b/ansible_collections/infinidat/infinibox/tests/hacking/infini_infinimetrics_present.json
@@ -0,0 +1,17 @@
+{
+ "ANSIBLE_MODULE_ARGS": {
+ "ibox_serial": "30368",
+ "ibox_url": "172.20.68.167",
+ "ibox_readonly_user": "david-ro",
+ "ibox_readonly_password": "123456",
+
+ "imx_system": "infinimetrics-vc6",
+ "imx_user": "IMX_ADMIN",
+ "imx_password": "nfinidat1",
+
+ "state": "present",
+ "system": "172.20.68.167",
+ "user": "admin",
+ "password": "123456"
+ }
+}
diff --git a/ansible_collections/infinidat/infinibox/tests/hacking/infini_notification_rule_absent_1521.json b/ansible_collections/infinidat/infinibox/tests/hacking/infini_notification_rule_absent_1521.json
new file mode 100644
index 000000000..a9f2f9f77
--- /dev/null
+++ b/ansible_collections/infinidat/infinibox/tests/hacking/infini_notification_rule_absent_1521.json
@@ -0,0 +1,9 @@
+{
+ "ANSIBLE_MODULE_ARGS": {
+ "name": "my-event-rule",
+ "state": "absent",
+ "system": "ibox1521",
+ "user": "admin",
+ "password": "123456"
+ }
+}
diff --git a/ansible_collections/infinidat/infinibox/tests/hacking/infini_notification_rule_absent_vibox.json b/ansible_collections/infinidat/infinibox/tests/hacking/infini_notification_rule_absent_vibox.json
new file mode 100644
index 000000000..30c824009
--- /dev/null
+++ b/ansible_collections/infinidat/infinibox/tests/hacking/infini_notification_rule_absent_vibox.json
@@ -0,0 +1,9 @@
+{
+ "ANSIBLE_MODULE_ARGS": {
+ "name": "my-event-rule",
+ "state": "absent",
+ "system": "172.20.68.167",
+ "user": "admin",
+ "password": "123456"
+ }
+}
diff --git a/ansible_collections/infinidat/infinibox/tests/hacking/infini_notification_rule_present.json b/ansible_collections/infinidat/infinibox/tests/hacking/infini_notification_rule_present.json
index e51182274..20fd6f2ae 100644
--- a/ansible_collections/infinidat/infinibox/tests/hacking/infini_notification_rule_present.json
+++ b/ansible_collections/infinidat/infinibox/tests/hacking/infini_notification_rule_present.json
@@ -1,8 +1,10 @@
{
"ANSIBLE_MODULE_ARGS": {
"name": "my-event-rule",
- "target": "syslog1_target",
+ "recipients": ["dohlemacher@infinidat.com"],
"event_level": [ "info" ],
+ "include_events": [],
+ "exclude_events": [],
"state": "present",
"system": "172.20.68.167",
"user": "admin",
diff --git a/ansible_collections/infinidat/infinibox/tests/hacking/infini_notification_rule_present_1521.json b/ansible_collections/infinidat/infinibox/tests/hacking/infini_notification_rule_present_1521.json
new file mode 100644
index 000000000..36043a9d1
--- /dev/null
+++ b/ansible_collections/infinidat/infinibox/tests/hacking/infini_notification_rule_present_1521.json
@@ -0,0 +1,13 @@
+{
+ "ANSIBLE_MODULE_ARGS": {
+ "name": "my-event-rule",
+ "recipients": ["dohlemacher@infinidat.com"],
+ "event_level": [ "info" ],
+ "include_events": [],
+ "exclude_events": [],
+ "state": "present",
+ "system": "ibox1521",
+ "user": "admin",
+ "password": "123456"
+ }
+}
diff --git a/ansible_collections/infinidat/infinibox/tests/hacking/infini_notification_rule_present_vibox.json b/ansible_collections/infinidat/infinibox/tests/hacking/infini_notification_rule_present_vibox.json
new file mode 100644
index 000000000..20fd6f2ae
--- /dev/null
+++ b/ansible_collections/infinidat/infinibox/tests/hacking/infini_notification_rule_present_vibox.json
@@ -0,0 +1,13 @@
+{
+ "ANSIBLE_MODULE_ARGS": {
+ "name": "my-event-rule",
+ "recipients": ["dohlemacher@infinidat.com"],
+ "event_level": [ "info" ],
+ "include_events": [],
+ "exclude_events": [],
+ "state": "present",
+ "system": "172.20.68.167",
+ "user": "admin",
+ "password": "123456"
+ }
+}
diff --git a/ansible_collections/infinidat/infinibox/tests/hacking/infini_pool_absent.json b/ansible_collections/infinidat/infinibox/tests/hacking/infini_pool_absent.json
new file mode 100644
index 000000000..0cb9f6e08
--- /dev/null
+++ b/ansible_collections/infinidat/infinibox/tests/hacking/infini_pool_absent.json
@@ -0,0 +1,9 @@
+{
+ "ANSIBLE_MODULE_ARGS": {
+ "name": "PSUS_ANSIBLE_pool",
+ "state": "absent",
+ "system": "172.20.68.167",
+ "user": "admin",
+ "password": "123456"
+ }
+}
diff --git a/ansible_collections/infinidat/infinibox/tests/hacking/infini_pool_present.json b/ansible_collections/infinidat/infinibox/tests/hacking/infini_pool_present.json
new file mode 100644
index 000000000..c23b8522e
--- /dev/null
+++ b/ansible_collections/infinidat/infinibox/tests/hacking/infini_pool_present.json
@@ -0,0 +1,15 @@
+{
+ "ANSIBLE_MODULE_ARGS": {
+ "name": "PSUS_ANSIBLE_pool",
+ "size": "10GB",
+ "vsize": "11GB",
+ "ssd_cache": false,
+ "compression": true,
+ "physical_capacity_warning": 76,
+ "physical_capacity_critical": 86,
+ "state": "present",
+ "system": "172.20.68.167",
+ "user": "admin",
+ "password": "123456"
+ }
+}
diff --git a/ansible_collections/infinidat/infinibox/tests/hacking/infini_pool_stat.json b/ansible_collections/infinidat/infinibox/tests/hacking/infini_pool_stat.json
new file mode 100644
index 000000000..d2f1d5e7e
--- /dev/null
+++ b/ansible_collections/infinidat/infinibox/tests/hacking/infini_pool_stat.json
@@ -0,0 +1,9 @@
+{
+ "ANSIBLE_MODULE_ARGS": {
+ "name": "PSUS_ANSIBLE_pool",
+ "state": "stat",
+ "system": "172.20.68.167",
+ "user": "admin",
+ "password": "123456"
+ }
+}
diff --git a/ansible_collections/infinidat/infinibox/tests/hacking/infini_sso_present_1521.json b/ansible_collections/infinidat/infinibox/tests/hacking/infini_sso_present_1521.json
new file mode 100644
index 000000000..f83a7dc2f
--- /dev/null
+++ b/ansible_collections/infinidat/infinibox/tests/hacking/infini_sso_present_1521.json
@@ -0,0 +1,15 @@
+{
+ "ANSIBLE_MODULE_ARGS": {
+ "issuer": "http://www.okta.com/exkra32oyyU6KCUCk2p7",
+ "name": "OKTA",
+ "sign_on_url": "https://infinidat.okta.com/app/infinidat_ibox2503_1/exkrwdi7dmXSKdC4l2p7/sso/saml",
+ "signed_assertion": false,
+ "signed_response": false,
+ "signing_certificate": "MIIDojCCAoqgAwIBAgIGAY1bQQXzMA0GCSqGSIb3DQEBCwUAMIGRMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEjAQBgNVBAMMCWluZmluaWRhdDEcMBoGCSqGSIb3DQEJARYNaW5mb0Bva3RhLmNvbTAeFw0yNDAxMzAxNjQyMjRaFw0zNDAxMzAxNjQzMjRaMIGRMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEjAQBgNVBAMMCWluZmluaWRhdDEcMBoGCSqGSIb3DQEJARYNaW5mb0Bva3RhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOJmwPjImRqI9scAXMNQbVlthi8Ogx7yGZhfNiqjd+V2ZAHitqTh3L/Bcn+hCiau8eBDFUsumR0P0RHpzulnHKoylAORohDnhuWPZw+xdlflsHXu84jC9cLWGYVHfeEpf1tosLKg/NdbJp34AuYQifythqJAsCwjz+j3cL/Xe2LPqCHgGG1NCPpbD4Gcavh0IVi3C749M3Cy+PLKHh/c/kfrbTdPHP3Y5hROBxwDCdHm5osLZA5V77gZBxU08xeo3IDy2IcqgH2uEI+dgeW9aRZWhG6tHCPYUhuIdpRX1fJhyrXNH6ZOFV0NyBqUxUDv2URRHwgXMLdkf6ujN+Cu2nECAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAHJUIfV51MwZ8LfYs0BW5eN6lZCqdzmIjv1fZ6NftIYm7FTVvMo49/lOCRuIYbFvWj/y9kJytu65iM5DUNGOxs+PIaKkt1bXwhvHtG5PKoAcDQj6jhN8C4/hxqz9HAOfLdJrH7RfRxJByc2Z7tAPsTDhPu52lKZrYpF+5Hwyy+Gjoqj1DUQx8u7qCMq2Rpp/iYmuk5/r0CVFyoQS6pVAX0UZqx+Mu221jD5+KkJoaTqU8twb9V9aPE4nCGyrA2u/sjqOt5TPBAGTMKx7yTo8NmxmqEJ+FDUXUeqJLzbeh+NEn6Dy7zJCcyq2lVhqJGALvGrh6CvbSuiOlRv1LDL9N+g==",
+ "enabled": true,
+ "state": "present",
+ "system": "ibox1521",
+ "user": "admin",
+ "password": "123456"
+ }
+}
diff --git a/ansible_collections/infinidat/infinibox/tests/hacking/infini_sso_present_vibox.json b/ansible_collections/infinidat/infinibox/tests/hacking/infini_sso_present_vibox.json
new file mode 100644
index 000000000..907887cb9
--- /dev/null
+++ b/ansible_collections/infinidat/infinibox/tests/hacking/infini_sso_present_vibox.json
@@ -0,0 +1,15 @@
+{
+ "ANSIBLE_MODULE_ARGS": {
+ "issuer": "http://www.okta.com/exkra32oyyU6KCUCk2p7",
+ "name": "OKTA",
+ "sign_on_url": "https://infinidat.okta.com/app/infinidat_ibox2503_1/exkrwdi7dmXSKdC4l2p7/sso/saml",
+ "signed_assertion": false,
+ "signed_response": false,
+ "signing_certificate": "MIIDojCCAoqgAwIBAgIGAY1bQQXzMA0GCSqGSIb3DQEBCwUAMIGRMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEjAQBgNVBAMMCWluZmluaWRhdDEcMBoGCSqGSIb3DQEJARYNaW5mb0Bva3RhLmNvbTAeFw0yNDAxMzAxNjQyMjRaFw0zNDAxMzAxNjQzMjRaMIGRMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEjAQBgNVBAMMCWluZmluaWRhdDEcMBoGCSqGSIb3DQEJARYNaW5mb0Bva3RhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOJmwPjImRqI9scAXMNQbVlthi8Ogx7yGZhfNiqjd+V2ZAHitqTh3L/Bcn+hCiau8eBDFUsumR0P0RHpzulnHKoylAORohDnhuWPZw+xdlflsHXu84jC9cLWGYVHfeEpf1tosLKg/NdbJp34AuYQifythqJAsCwjz+j3cL/Xe2LPqCHgGG1NCPpbD4Gcavh0IVi3C749M3Cy+PLKHh/c/kfrbTdPHP3Y5hROBxwDCdHm5osLZA5V77gZBxU08xeo3IDy2IcqgH2uEI+dgeW9aRZWhG6tHCPYUhuIdpRX1fJhyrXNH6ZOFV0NyBqUxUDv2URRHwgXMLdkf6ujN+Cu2nECAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAHJUIfV51MwZ8LfYs0BW5eN6lZCqdzmIjv1fZ6NftIYm7FTVvMo49/lOCRuIYbFvWj/y9kJytu65iM5DUNGOxs+PIaKkt1bXwhvHtG5PKoAcDQj6jhN8C4/hxqz9HAOfLdJrH7RfRxJByc2Z7tAPsTDhPu52lKZrYpF+5Hwyy+Gjoqj1DUQx8u7qCMq2Rpp/iYmuk5/r0CVFyoQS6pVAX0UZqx+Mu221jD5+KkJoaTqU8twb9V9aPE4nCGyrA2u/sjqOt5TPBAGTMKx7yTo8NmxmqEJ+FDUXUeqJLzbeh+NEn6Dy7zJCcyq2lVhqJGALvGrh6CvbSuiOlRv1LDL9N+g==",
+ "enabled": true,
+ "state": "present",
+ "system": "172.20.68.167",
+ "user": "admin",
+ "password": "123456"
+ }
+}