summaryrefslogtreecommitdiffstats
path: root/ansible_collections/vultr/cloud
diff options
context:
space:
mode:
Diffstat (limited to 'ansible_collections/vultr/cloud')
-rw-r--r--ansible_collections/vultr/cloud/.github/workflows/cleanup.yml69
-rw-r--r--ansible_collections/vultr/cloud/.github/workflows/integration.yml11
-rw-r--r--ansible_collections/vultr/cloud/.github/workflows/publish.yml4
-rw-r--r--ansible_collections/vultr/cloud/.github/workflows/sanity.yml6
-rw-r--r--ansible_collections/vultr/cloud/.github/workflows/unit.yml11
-rw-r--r--ansible_collections/vultr/cloud/CHANGELOG.rst72
-rw-r--r--ansible_collections/vultr/cloud/FILES.json1726
-rw-r--r--ansible_collections/vultr/cloud/MANIFEST.json4
-rw-r--r--ansible_collections/vultr/cloud/README.md4
-rw-r--r--ansible_collections/vultr/cloud/changelogs/changelog.yaml75
-rw-r--r--ansible_collections/vultr/cloud/meta/runtime.yml4
-rw-r--r--ansible_collections/vultr/cloud/plugins/inventory/vultr.py12
-rw-r--r--ansible_collections/vultr/cloud/plugins/module_utils/common_instance.py247
-rw-r--r--ansible_collections/vultr/cloud/plugins/module_utils/vultr_v2.py45
-rw-r--r--ansible_collections/vultr/cloud/plugins/modules/bare_metal.py440
-rw-r--r--ansible_collections/vultr/cloud/plugins/modules/firewall_rule.py15
-rw-r--r--ansible_collections/vultr/cloud/plugins/modules/instance.py218
-rw-r--r--ansible_collections/vultr/cloud/plugins/modules/instance_info.py4
-rw-r--r--ansible_collections/vultr/cloud/plugins/modules/object_storage.py197
-rw-r--r--ansible_collections/vultr/cloud/plugins/modules/reserved_ip.py3
-rw-r--r--ansible_collections/vultr/cloud/plugins/modules/vpc2.py191
-rw-r--r--ansible_collections/vultr/cloud/plugins/modules/vpc2_info.py122
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/_reset_cloud/aliases2
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/_reset_cloud/tasks/main.yml4
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/aliases3
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/defaults/main.yml46
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/meta/main.yml3
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/tasks/absent.yml38
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/tasks/failures.yml55
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/tasks/main.yml13
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/tasks/present.yml152
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/tasks/tests.yml52
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/block_storage_info/tasks/tests.yml4
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/cleanup/tasks/cleanup_all.yml19
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/cleanup/tasks/cleanup_bare_metal.yml29
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/cleanup/tasks/cleanup_object_storage.yml29
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/cleanup/tasks/cleanup_vpc2.yml28
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/dns_domain_info/tasks/tests.yml4
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/dns_record/defaults/main.yml11
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/dns_record/tasks/create_record.yml20
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/dns_record/tasks/remove_record.yml40
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/dns_record/tasks/update_record.yml30
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/firewall_group_info/tasks/tests.yml4
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/firewall_rule/defaults/main.yml3
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/firewall_rule/tasks/rule_absent.yml20
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/firewall_rule/tasks/rule_present.yml20
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/firewall_rule_info/tasks/tests.yml4
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/instance/defaults/main.yml7
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/instance/tasks/failures.yml2
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/instance/tasks/present.yml40
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/instance_info/tasks/tests.yml14
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/object_storage/aliases3
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/object_storage/defaults/main.yml4
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/object_storage/tasks/failures.yml10
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/object_storage/tasks/main.yml8
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/object_storage/tasks/tests.yml93
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/reserved_ip/aliases3
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/reserved_ip/defaults/main.yml12
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/reserved_ip/tasks/tests.yml56
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/snapshot_info/tasks/tests.yml4
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/ssh_key_info/tasks/tests.yml12
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/startup_script_info/tasks/tests.yml4
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/vpc/defaults/main.yml1
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/vpc/tasks/tests.yml42
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/vpc2/aliases3
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/vpc2/defaults/main.yml5
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/vpc2/meta/main.yml3
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/vpc2/tasks/main.yml7
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/vpc2/tasks/tests.yml112
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/vpc2_info/aliases3
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/vpc2_info/defaults/main.yml5
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/vpc2_info/meta/main.yml3
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/vpc2_info/tasks/main.yml7
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/vpc2_info/tasks/tests.yml36
-rw-r--r--ansible_collections/vultr/cloud/tests/integration/targets/vpc_info/tasks/tests.yml4
-rw-r--r--ansible_collections/vultr/cloud/tests/unit/plugins/inventory/test_vultr.py11
76 files changed, 3564 insertions, 1063 deletions
diff --git a/ansible_collections/vultr/cloud/.github/workflows/cleanup.yml b/ansible_collections/vultr/cloud/.github/workflows/cleanup.yml
new file mode 100644
index 000000000..bb244725e
--- /dev/null
+++ b/ansible_collections/vultr/cloud/.github/workflows/cleanup.yml
@@ -0,0 +1,69 @@
+---
+name: Cleanup
+
+on:
+ pull_request:
+ types: [labeled]
+ schedule:
+ - cron: 55 5 * * 2 # Run weekly
+
+jobs:
+ integration-test:
+ name: Cleaning up cloud test env
+ if: ${{ github.event.label.name == 'cleanup' || github.event_name == 'schedule' }}
+ runs-on: ubuntu-20.04
+ defaults:
+ run:
+ working-directory: ansible_collections/vultr/cloud
+ strategy:
+ max-parallel: 1
+ fail-fast: false
+ matrix:
+ ansible:
+ - stable-2.15
+ python:
+ - "3.10"
+ steps:
+ - name: Check out code
+ uses: actions/checkout@v4
+ with:
+ path: ansible_collections/vultr/cloud
+
+ - name: Set up Python ${{ matrix.python }}
+ uses: actions/setup-python@v5
+ with:
+ python-version: ${{ matrix.python }}
+
+ - name: Install ansible-base (${{ matrix.ansible }})
+ run: |
+ python -m pip install --upgrade pip
+ pip install https://github.com/ansible/ansible/archive/${{ matrix.ansible }}.tar.gz --disable-pip-version-check
+
+ - name: Build and install collection
+ run: |
+ ansible-galaxy collection build .
+ ansible-galaxy collection install *.gz
+
+ - name: Add config file
+ env:
+ VULTR_CONFIG_FILE: ${{ secrets.VULTR_CONFIG_FILE }}
+ run: |
+ echo "$VULTR_CONFIG_FILE" > tests/integration/cloud-config-vultr.ini
+
+ - name: Ensure no other integration test is currently running
+ uses: softprops/turnstyle@v1
+ timeout-minutes: 60
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ same-branch-only: false
+
+ - name: Cleanup resources
+ run: >-
+ ansible-test
+ integration
+ --docker
+ -v
+ --color
+ --continue-on-error
+ cloud/vultr/_reset_cloud
diff --git a/ansible_collections/vultr/cloud/.github/workflows/integration.yml b/ansible_collections/vultr/cloud/.github/workflows/integration.yml
index 689891737..a79039300 100644
--- a/ansible_collections/vultr/cloud/.github/workflows/integration.yml
+++ b/ansible_collections/vultr/cloud/.github/workflows/integration.yml
@@ -5,10 +5,7 @@ on:
pull_request:
types: [labeled]
push:
- branches:
- - main
paths:
- - ".github/workflows/integration.yml"
- "plugins/**"
- "tests/integration/**"
schedule:
@@ -17,7 +14,7 @@ on:
jobs:
integration-test:
name: Integration test Ansible ${{ matrix.ansible }} Py${{ matrix.python }}
- if: ${{ github.event.label.name == 'automation' || github.ref_name == 'main' }}
+ if: ${{ github.event.label.name == 'automation' || github.ref_name == 'main' || github.event_name == 'schedule' }}
runs-on: ubuntu-20.04
defaults:
run:
@@ -27,17 +24,17 @@ jobs:
fail-fast: false
matrix:
ansible:
- - stable-2.14
+ - stable-2.15
python:
- "3.10"
steps:
- name: Check out code
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
with:
path: ansible_collections/vultr/cloud
- name: Set up Python ${{ matrix.python }}
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
diff --git a/ansible_collections/vultr/cloud/.github/workflows/publish.yml b/ansible_collections/vultr/cloud/.github/workflows/publish.yml
index 8e13d6925..54c34f5e6 100644
--- a/ansible_collections/vultr/cloud/.github/workflows/publish.yml
+++ b/ansible_collections/vultr/cloud/.github/workflows/publish.yml
@@ -16,12 +16,12 @@ jobs:
run:
working-directory: ansible_collections/vultr/cloud
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
path: ansible_collections/vultr/cloud
- name: Set up Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: "3.x"
diff --git a/ansible_collections/vultr/cloud/.github/workflows/sanity.yml b/ansible_collections/vultr/cloud/.github/workflows/sanity.yml
index 386568562..ab2a3f14c 100644
--- a/ansible_collections/vultr/cloud/.github/workflows/sanity.yml
+++ b/ansible_collections/vultr/cloud/.github/workflows/sanity.yml
@@ -21,18 +21,18 @@ jobs:
strategy:
matrix:
ansible:
- - stable-2.12
- stable-2.13
- stable-2.14
+ - stable-2.15
- devel
steps:
- name: Check out code
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
with:
path: ansible_collections/vultr/cloud
- name: Set up Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: "3.10"
diff --git a/ansible_collections/vultr/cloud/.github/workflows/unit.yml b/ansible_collections/vultr/cloud/.github/workflows/unit.yml
index 667b58c30..216a67e5f 100644
--- a/ansible_collections/vultr/cloud/.github/workflows/unit.yml
+++ b/ansible_collections/vultr/cloud/.github/workflows/unit.yml
@@ -7,9 +7,8 @@ on:
branches:
- main
paths:
- - '.github/workflows/unit.yml'
- - 'plugins/**'
- - 'tests/unit/**'
+ - "plugins/**"
+ - "tests/unit/**"
workflow_call:
workflow_dispatch:
@@ -24,17 +23,17 @@ jobs:
fail-fast: false
matrix:
ansible:
- - stable-2.14
+ - stable-2.15
python:
- "3.10"
steps:
- name: Check out code
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
with:
path: ansible_collections/vultr/cloud
- name: Set up Python ${{ matrix.python }}
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
diff --git a/ansible_collections/vultr/cloud/CHANGELOG.rst b/ansible_collections/vultr/cloud/CHANGELOG.rst
index 9374416d8..867080cc0 100644
--- a/ansible_collections/vultr/cloud/CHANGELOG.rst
+++ b/ansible_collections/vultr/cloud/CHANGELOG.rst
@@ -5,6 +5,78 @@ Vultr Collection Release Notes
.. contents:: Topics
+v1.12.1
+=======
+
+Bugfixes
+--------
+
+- Fixed an error while waiting for a specific state and the API returns an empty response. (https://github.com/vultr/ansible-collection-vultr/issues/108).
+- instance_info - Fixed the alias ``name`` being was used on the wrong argument. (https://github.com/vultr/ansible-collection-vultr/issues/105).
+
+v1.12.0
+=======
+
+Minor Changes
+-------------
+
+- Added retry on HTTP 504 returned by the API (https://github.com/vultr/ansible-collection-vultr/pull/104).
+
+Bugfixes
+--------
+
+- Fixed an issue with waiting for state (https://github.com/vultr/ansible-collection-vultr/pull/102).
+
+New Modules
+-----------
+
+- object_storage - Manages object storages on Vultr
+
+v1.11.0
+=======
+
+Minor Changes
+-------------
+
+- Implemented a feature to distinguish resources by region if available. This allows to have identical name per region e.g. a VPC named ``default`` in each region. (https://github.com/vultr/ansible-collection-vultr/pull/98).
+- instance - Added a new param ``user_scheme`` to change user scheme to non-root on Linux while creating the instance (https://github.com/vultr/ansible-collection-vultr/issues/96).
+
+Bugfixes
+--------
+
+- reserved_ip - Fixed an issue which caused the module to fail, also enabled integration tests (https://github.com/vultr/ansible-collection-vultr/issues/92).
+
+v1.10.1
+=======
+
+Bugfixes
+--------
+
+- instance - Fixed an issue detecting the instance state returned by the API (https://github.com/vultr/ansible-collection-vultr/pull/89).
+
+v1.10.0
+=======
+
+Minor Changes
+-------------
+
+- inventory - Added VPC/VPC 2.0 support by adding ``internal_ip`` to the attributes (https://github.com/vultr/ansible-collection-vultr/issues/86).
+
+v1.9.0
+======
+
+Bugfixes
+--------
+
+- firewall_rule - Fixed an idempotency issue if parameter ``port`` is set on protocols other than TCP/UDP (https://github.com/vultr/ansible-collection-vultr/issues/76).
+
+New Modules
+-----------
+
+- bare_metal - Manages bare metal machines on Vultr.
+- vpc2 - Manages VPCs 2.0 on Vultr
+- vpc2_info - Gather information about the Vultr VPCs 2.0
+
v1.8.0
======
diff --git a/ansible_collections/vultr/cloud/FILES.json b/ansible_collections/vultr/cloud/FILES.json
index e4c120fb8..efb60cea2 100644
--- a/ansible_collections/vultr/cloud/FILES.json
+++ b/ansible_collections/vultr/cloud/FILES.json
@@ -8,1515 +8,1746 @@
"format": 1
},
{
- "name": ".ansible-lint",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "8e858e68d7c1937d65dfcad8b39b28b8d7e41aac65eff967772fba0c3a882a15",
+ "name": "changelogs",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "codecov.yml",
+ "name": "changelogs/fragments",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "changelogs/fragments/.keep",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0271dcfe609d71afb466112f2d1c4c13943580fa97bb42b2baa08a1c37bb1c14",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "README.md",
+ "name": "changelogs/.gitignore",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d0781fe71bb74c2b2aaef28dc2c5e081dd0f4b3977a1247c72b22827d5dc6726",
+ "chksum_sha256": "919ef00776e7d2ff349950ac4b806132aa9faf006e214d5285de54533e443b33",
"format": 1
},
{
- "name": "meta",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "changelogs/changelog.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "4c3acebdf5e2a94572a3152197fa488806a5cc61b797220092efc9c7a10085f2",
"format": 1
},
{
- "name": "meta/runtime.yml",
+ "name": "changelogs/config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "491775c582aeecf06f52f7ed2c3764ebe5e6c35476c8f02c9a4068745385ccac",
+ "chksum_sha256": "0d1c790424791b634a9c7704aa0e9ec56e3ff34a602f269d68a356d87c777b3a",
"format": 1
},
{
- "name": "tests",
+ "name": ".github",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration",
+ "name": ".github/workflows",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/cloud-config-vultr.ini.template",
+ "name": ".github/workflows/unit.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "13818bbda928f18107c0e94118d0bd1f52fc805751aeba8f278140c7dc6e5e29",
- "format": 1
- },
- {
- "name": "tests/integration/targets",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "chksum_sha256": "5b6f66b465bab31feebc85b6add960def2e50f82d5bcafa408873d2be5f2e722",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_rule_info",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": ".github/workflows/cleanup.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "300af2b95f5604bb00257206a589e731d4b36ceab75685d32975a0cddc6dae8d",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_rule_info/meta",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": ".github/workflows/integration.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "b197d1be7422ff61a7aab5bad0d4dffc7c741990abab6132abe65db1a1f38586",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_rule_info/meta/main.yml",
+ "name": ".github/workflows/sanity.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
+ "chksum_sha256": "5be1c7e95ed12ccc882570d1504b2273cf11104b0fa1167791cf1da12c97edda",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_rule_info/tasks",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": ".github/workflows/publish.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "25ae9a6854a6ae27d4d9e41fcfde14d07d4272e4364deb5649abfb0db42ddb4d",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_rule_info/tasks/tests.yml",
+ "name": ".github/dependabot.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "78b2bbacaa516217cf90de007da05136b7f08ef90bcb8c6d9e6320eaee45ee52",
+ "chksum_sha256": "d207e80d10726360f2046d4b2473a3cfd9f9eca99590281fa39d88f78e745145",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_rule_info/tasks/main.yml",
+ "name": "CHANGELOG.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b3a529e7fe7a88bd74d28e0d1a59444ff919861c898ce936304aa3cf905226",
+ "chksum_sha256": "6efbfe17a2c629dd958e13979053d0533e3d9c58aeecd9387e2e9ef4a465df26",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_rule_info/defaults",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "COPYING",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "c61f12da7cdad526bdcbed47a4c0a603e60dbbfdaf8b66933cd088e9132c303f",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_rule_info/defaults/main.yml",
+ "name": "CONTRIBUTING.md",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "10b22387a8147bd98ea199fa7e8866837cb3742dd173a2bb2f1c4bfefb326741",
+ "chksum_sha256": "d61725d614410e2ee0a900fb0f6b6d742ad8fb689ae27c4d6a3a7f89e82fc791",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_rule_info/aliases",
+ "name": ".gitignore",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
+ "chksum_sha256": "1467ad38919911ec5759af24376728faf2361c0335d52fb8bea4853e7b698b48",
"format": 1
},
{
- "name": "tests/integration/targets/common",
+ "name": "plugins",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/common/default",
+ "name": "plugins/modules",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/common/default/main.yml",
+ "name": "plugins/modules/dns_domain.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "11f87c1aa19551822d0b8585fcbb27151354e93cca5298e419581a349a23896d",
+ "chksum_sha256": "de781d3439aba96749c83b24b29c15e1f62ac807c8cc793e08ea374ece4c3c68",
"format": 1
},
{
- "name": "tests/integration/targets/common/aliases",
+ "name": "plugins/modules/account_info.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e084a3683ef795d1cdbf5e9b253f2ca1f783ae0d0d6e47e419acbbc4fc80bbfa",
- "format": 1
- },
- {
- "name": "tests/integration/targets/instance",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
- "format": 1
- },
- {
- "name": "tests/integration/targets/instance/meta",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "chksum_sha256": "234df324cb37004dff1e9d5847998f97304c9228e67815f05b5087ab5709e911",
"format": 1
},
{
- "name": "tests/integration/targets/instance/meta/main.yml",
+ "name": "plugins/modules/instance.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
+ "chksum_sha256": "eea21385ceae95edf0115ad3364bf161232ee50119b5b2ef5480fae6d9cef30b",
"format": 1
},
{
- "name": "tests/integration/targets/instance/tasks",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "plugins/modules/firewall_group.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "7e5482639e8b600dff912fc03f7b0baa24a3cfa70f807eeeeb6c1ebfcf354f94",
"format": 1
},
{
- "name": "tests/integration/targets/instance/tasks/tests.yml",
+ "name": "plugins/modules/object_storage.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "025d35e438e475b5cae504dcf1dcb8a425de2a5cbff0502018c99ad6780b2960",
+ "chksum_sha256": "e69e499783341fb8ec78c21d2d9976d96185c140e18f22864da3993c9774e1bc",
"format": 1
},
{
- "name": "tests/integration/targets/instance/tasks/stop-start.yml",
+ "name": "plugins/modules/firewall_rule_info.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "217770633862454ea3c34efe13e29e29a8fb5cd297807c8dd49065f3beec39c3",
+ "chksum_sha256": "267c9f763168ce7b6c938e874b4048d6492add6766406d3a6cbc3d227ed14da3",
"format": 1
},
{
- "name": "tests/integration/targets/instance/tasks/failures.yml",
+ "name": "plugins/modules/snapshot_info.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b1180d83e69df042e848919bbd93967f6a316ffe983c2d7ad0838b26140d46f4",
+ "chksum_sha256": "a60ecc36574d60168903ee239185d42e636c8d26356bb84d6c666d8ab7368e50",
"format": 1
},
{
- "name": "tests/integration/targets/instance/tasks/main.yml",
+ "name": "plugins/modules/instance_info.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "98d1c97130c60cd0b5b7594edbf892f99b2d6a5ae73fd24d71e4effdfd415de6",
+ "chksum_sha256": "fc787595fdeecaf68aa253d7eff5ce08ab0b2b937c8cc180ae7d1e59c7139adc",
"format": 1
},
{
- "name": "tests/integration/targets/instance/tasks/reinstall.yml",
+ "name": "plugins/modules/user_info.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0cc5b6784d2d8030444d57d871f80b2f1a453132fccdeb002142eb027576ebbe",
+ "chksum_sha256": "ae4e7899a1107f0d9a2dbfac410209528d687ceef6c9f587b3d78cdb974d8e7f",
"format": 1
},
{
- "name": "tests/integration/targets/instance/tasks/present.yml",
+ "name": "plugins/modules/vpc2.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "96e9c85025aa4aa2b6bd614718d698d0174563a27d7c9af1927428a40b31528d",
+ "chksum_sha256": "6c77428c298b1cde682cdf39e707d4dae26bc5efd9b056850a85d40b8226b8bd",
"format": 1
},
{
- "name": "tests/integration/targets/instance/tasks/absent.yml",
+ "name": "plugins/modules/bare_metal.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2d33951d4d498963a2311fea64fdf4a1a50b39ea9712ed72b4955393fc1a90c4",
+ "chksum_sha256": "c16bbdcc107023e4ac71c5cc352d9eee650df7b26a30c2b7f950a63ae557d528",
"format": 1
},
{
- "name": "tests/integration/targets/instance/defaults",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "plugins/modules/region_info.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "ee6e31f3192bbe6e0db69cd7efef79a3a3fee40763071aa5c674f5c6951d7bdb",
"format": 1
},
{
- "name": "tests/integration/targets/instance/defaults/main.yml",
+ "name": "plugins/modules/plan_info.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a30d3095617347fb25ffcada3fa1d94729d2e53f0149f1d3379d93270b7a4359",
+ "chksum_sha256": "3648af6b8fd69f3bb66faf265767fd39a7afd5bebd5f88964db42dc6d0d8d392",
"format": 1
},
{
- "name": "tests/integration/targets/instance/aliases",
+ "name": "plugins/modules/vpc_info.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
+ "chksum_sha256": "903efd1d0f822de7aaaf659d968e13e9104d6af4c3667a782efd8bf056662829",
"format": 1
},
{
- "name": "tests/integration/targets/instance_info",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "plugins/modules/block_storage.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "d2a98391d3d84671552b48b0fad61811f753420f09b5b94626e511b3c74cf93f",
"format": 1
},
{
- "name": "tests/integration/targets/instance_info/meta",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "plugins/modules/os_info.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "0143ad73c6b10692c6577730523b0159782bb6a678d3946dc920b3b758565155",
"format": 1
},
{
- "name": "tests/integration/targets/instance_info/meta/main.yml",
+ "name": "plugins/modules/startup_script.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
+ "chksum_sha256": "14be407f3eb256735311fde075a3c983abb9b6932925d412e5782cec26c3e23f",
"format": 1
},
{
- "name": "tests/integration/targets/instance_info/tasks",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "plugins/modules/snapshot.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "361a3cdac8de6b7ff2ba98859389d9d53e6a45b5f003bd069d9ea78a2759bcfc",
"format": 1
},
{
- "name": "tests/integration/targets/instance_info/tasks/tests.yml",
+ "name": "plugins/modules/startup_script_info.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "008e0933f58e74fd98a4b0600ff49d5ac7e862fe19439be701d180435472c87d",
+ "chksum_sha256": "23134fcb25c56ab61a08afe195100cd4f2eb5ef14b1a8ba6bfc7b82cdea57859",
"format": 1
},
{
- "name": "tests/integration/targets/instance_info/tasks/main.yml",
+ "name": "plugins/modules/ssh_key_info.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "158f45cabb1bb2f67511f1885c51b65872642bbcaa2915b8605d1f763ce1f832",
+ "chksum_sha256": "5cedb298db9d7b8b3888eed9a734309a5ef0b0cae1052211cc0a571a9c2ada22",
"format": 1
},
{
- "name": "tests/integration/targets/instance_info/defaults",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "plugins/modules/dns_domain_info.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "f76e554deed6163146c291612e807058309f4553b8d5ff9798a0fabe27717307",
"format": 1
},
{
- "name": "tests/integration/targets/instance_info/defaults/main.yml",
+ "name": "plugins/modules/user.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3a42de11dbbb07c09b93bfbb2d99d641f66dacb9aa96752234cb55db517f9e89",
+ "chksum_sha256": "38d3651f9b624fe512dae40c4ef24e4ccb0eae4ea9c394d260b851ff57dc8365",
"format": 1
},
{
- "name": "tests/integration/targets/instance_info/aliases",
+ "name": "plugins/modules/plan_metal_info.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
+ "chksum_sha256": "93bda0d2911f927951c30540a54a8da71a61a20c7f9cafc7368097d335c47aa5",
"format": 1
},
{
- "name": "tests/integration/targets/snapshot",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "plugins/modules/__init__.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "tests/integration/targets/snapshot/meta",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "plugins/modules/firewall_group_info.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "2e4dce46bd2ddbbd7ded11f11f8d4b57f15f603595f69d142e1c10bc8532e936",
"format": 1
},
{
- "name": "tests/integration/targets/snapshot/meta/main.yml",
+ "name": "plugins/modules/ssh_key.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
+ "chksum_sha256": "5e1a8e741f196a6b080077b88aa14ec6595878108978ef230224592b161ca44b",
"format": 1
},
{
- "name": "tests/integration/targets/snapshot/tasks",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "plugins/modules/firewall_rule.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "930069d8a2f087f4e7cb1b7b853e42fded5dfa8fbb9c532836132438049125fa",
"format": 1
},
{
- "name": "tests/integration/targets/snapshot/tasks/tests.yml",
+ "name": "plugins/modules/dns_record.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0284c806f32966951ab87baa051d3be2fe9a8839e37c55c760c695730db110cd",
+ "chksum_sha256": "4b29de118b42237350431b7bef3dbf92ff98bfe989183756aea92efb0b73589d",
"format": 1
},
{
- "name": "tests/integration/targets/snapshot/tasks/failures.yml",
+ "name": "plugins/modules/reserved_ip.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "bb2a0533a657d8ccdc7d750a4e6607648123016a127b9a8337c92bcfd4faf7dc",
+ "chksum_sha256": "98c4609e5b2183915afef8d49fe3f2f62407f5faeaa1d92da7ff8fd8eaa8375e",
"format": 1
},
{
- "name": "tests/integration/targets/snapshot/tasks/main.yml",
+ "name": "plugins/modules/vpc2_info.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7ce50b2181ffe6e2121e1692900fdb107636f90e048c195327fcc13737816a31",
+ "chksum_sha256": "4d4a3f916a93826f20ed75d12557941dc2da27144bf882f9a68bf378f40bb88b",
"format": 1
},
{
- "name": "tests/integration/targets/snapshot/tasks/present.yml",
+ "name": "plugins/modules/vpc.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "30c0334aed12e3f1d1d319de71c91e8faa7e90c0ba23ea8af12e7f66eb1dfb9f",
+ "chksum_sha256": "9ea848792c5ac44d5d25f366dbab63916f6797c977238ede08a2b2e08f74933b",
"format": 1
},
{
- "name": "tests/integration/targets/snapshot/tasks/absent.yml",
+ "name": "plugins/modules/block_storage_info.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "63b358651e57593af74d74bf7ab7e7812a77443ba1628f321830199245f55760",
+ "chksum_sha256": "d2677e90317fc892df48133c755f1c9cf8e1281d610f43937abc54e79f78ee81",
"format": 1
},
{
- "name": "tests/integration/targets/snapshot/defaults",
+ "name": "plugins/module_utils",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/snapshot/defaults/main.yml",
+ "name": "plugins/module_utils/common_instance.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "6a784801be127bde96b005e775b8981f116875928902348ec6c9384de1b5097b",
+ "chksum_sha256": "3db5675896b5b2a842f34edcaa022e0562ff0e0fc03c976afd602c2de5792527",
"format": 1
},
{
- "name": "tests/integration/targets/snapshot/aliases",
+ "name": "plugins/module_utils/vultr_v2.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
+ "chksum_sha256": "adc7cacc8f196b524b1b56fadd81ca90e4901edd5c3f186297752eaaec8fffc6",
"format": 1
},
{
- "name": "tests/integration/targets/plan_info",
+ "name": "plugins/inventory",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/plan_info/tasks",
+ "name": "plugins/inventory/vultr.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "89603559be67b63ffde3fd25a0adb19e7de94cc90f9a9c1305e264a173f24f3f",
+ "format": 1
+ },
+ {
+ "name": "plugins/doc_fragments",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/plan_info/tasks/main.yml",
+ "name": "plugins/doc_fragments/__init__.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "501533396ed8009dc79e310c95d764591704b6cd32091ee08eebd005f8a4b87b",
+ "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"format": 1
},
{
- "name": "tests/integration/targets/plan_info/aliases",
+ "name": "plugins/doc_fragments/vultr_v2.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "dc2ce6b1319ce6a5d14015a0ce0e61945a5fcb9f4b1cc1e3f2705ba7a5d4b466",
+ "chksum_sha256": "64f7eb39cbe633e26394afeb6d125d440046ec37f1cf82d4a4ea072092954afa",
"format": 1
},
{
- "name": "tests/integration/targets/startup_script_info",
+ "name": "tests",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/startup_script_info/meta",
+ "name": "tests/integration",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/startup_script_info/meta/main.yml",
+ "name": "tests/integration/cloud-config-vultr.ini.template",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
+ "chksum_sha256": "13818bbda928f18107c0e94118d0bd1f52fc805751aeba8f278140c7dc6e5e29",
"format": 1
},
{
- "name": "tests/integration/targets/startup_script_info/tasks",
+ "name": "tests/integration/targets",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/startup_script_info/tasks/tests.yml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "20e5a94cc522ef7c6a387acaacce5c6d1a4127524fda45937a22b58e83a38c42",
+ "name": "tests/integration/targets/firewall_group",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/startup_script_info/tasks/main.yml",
+ "name": "tests/integration/targets/firewall_group/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d5738ca7eeca0a524a80197d73b1d677913903103d5bea0663c8fdc66eb6c09c",
+ "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
"format": 1
},
{
- "name": "tests/integration/targets/startup_script_info/defaults",
+ "name": "tests/integration/targets/firewall_group/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/startup_script_info/defaults/main.yml",
+ "name": "tests/integration/targets/firewall_group/tasks/tests.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "81ba8e5671cf9d77b15558eb21489b807a60b071c19dc5a16cbfd9ba6ccfe835",
+ "chksum_sha256": "6f163960098273136e9b6baf9c853e6178c8c34329d584e0b33e41250cd19483",
"format": 1
},
{
- "name": "tests/integration/targets/startup_script_info/aliases",
+ "name": "tests/integration/targets/firewall_group/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
+ "chksum_sha256": "e3b3a529e7fe7a88bd74d28e0d1a59444ff919861c898ce936304aa3cf905226",
"format": 1
},
{
- "name": "tests/integration/targets/region_info",
+ "name": "tests/integration/targets/firewall_group/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/region_info/tasks",
+ "name": "tests/integration/targets/firewall_group/meta/main.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/firewall_group/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/region_info/tasks/main.yml",
+ "name": "tests/integration/targets/firewall_group/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1e9238ef3b628e9be3f45f1907eb44d53a34f973b548064abff1f36d525a8bab",
+ "chksum_sha256": "ce7cb163662ec14873afee9b83c34874bd0eaf496890d7b7b35d488bf094461b",
"format": 1
},
{
- "name": "tests/integration/targets/region_info/aliases",
+ "name": "tests/integration/targets/account_info",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/account_info/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "dc2ce6b1319ce6a5d14015a0ce0e61945a5fcb9f4b1cc1e3f2705ba7a5d4b466",
+ "chksum_sha256": "a9f61a9487700a83508395d74ce06374baecfcaf4306b30f008d8b726c626a69",
"format": 1
},
{
- "name": "tests/integration/targets/ssh_key_info",
+ "name": "tests/integration/targets/account_info/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ssh_key_info/meta",
+ "name": "tests/integration/targets/account_info/tasks/main.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "2b49a94c64afb9d4d95f3cacf9ea2667390dd014585eb65ff4d15e026e346e2e",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/cleanup",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ssh_key_info/meta/main.yml",
+ "name": "tests/integration/targets/cleanup/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
+ "chksum_sha256": "e084a3683ef795d1cdbf5e9b253f2ca1f783ae0d0d6e47e419acbbc4fc80bbfa",
"format": 1
},
{
- "name": "tests/integration/targets/ssh_key_info/tasks",
+ "name": "tests/integration/targets/cleanup/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ssh_key_info/tasks/tests.yml",
+ "name": "tests/integration/targets/cleanup/tasks/cleanup_firewall_group.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "58728de0ce48a0024eeadf07e4b738b68aa1533ebdad396c9bf0bf0857475365",
+ "chksum_sha256": "c0c8fb99ae5f40480ba7b0da24f35632388c3865108d7d5148e87dace9adc816",
"format": 1
},
{
- "name": "tests/integration/targets/ssh_key_info/tasks/main.yml",
+ "name": "tests/integration/targets/cleanup/tasks/cleanup_bare_metal.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "44ed0d376e3a684d03aca3056db7bd74b63451f5334639ae37970b4b468e900d",
+ "chksum_sha256": "3b74c0f2781eec35a6e75b14be81c287367dbf7a42afa0c276db0f0a56393b28",
"format": 1
},
{
- "name": "tests/integration/targets/ssh_key_info/defaults",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/cleanup/tasks/cleanup_vpc.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8cb8e6f9ea326d780e4565a67a967911fdf9ca09a039b904b600f4674955eb59",
"format": 1
},
{
- "name": "tests/integration/targets/ssh_key_info/defaults/main.yml",
+ "name": "tests/integration/targets/cleanup/tasks/cleanup_reserved_ip.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f09f3081e9a29164ed5d17114a52e97f2b8190d31c8c99cd23601d9f53c50e01",
+ "chksum_sha256": "7f55ef9910de1c95c3f152822b02b1dcc77bc347c559f4d0ea9850ed67ed0466",
"format": 1
},
{
- "name": "tests/integration/targets/ssh_key_info/aliases",
+ "name": "tests/integration/targets/cleanup/tasks/cleanup_block_storage.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
+ "chksum_sha256": "f1b0b7013c9ed7e03d27d7f213415654e0e57b204526029921416e1722dd8c82",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_group_info",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/cleanup/tasks/cleanup_user.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "d045ec23fee0ba28312d3a62b2c177e40e2991bafd1363f4862585f2cbdcfb5b",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_group_info/meta",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/cleanup/tasks/cleanup_object_storage.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "55f43e34c09e93cb44ff0c38d845f833ca4c3736a666851ac9ce685a25df9ddf",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_group_info/meta/main.yml",
+ "name": "tests/integration/targets/cleanup/tasks/cleanup_dns_domain.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
+ "chksum_sha256": "0f70151df2fe2eb1b434fccf8e2d8eba7e13db7cb110520c1e69784499bdc2a8",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_group_info/tasks",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/cleanup/tasks/cleanup_network.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "1c6f111d899836a496e790770077aa92db40ceca90633a5d5b72200a388dce2e",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_group_info/tasks/tests.yml",
+ "name": "tests/integration/targets/cleanup/tasks/cleanup_vpc2.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1284e6369a45c85f50eb9267063e4f9bba78064dd1abb497a660e54eb9ad1e9a",
+ "chksum_sha256": "e004778b3bb4abcfbc4037b7c94d14df1fe5f8b72611547c88b226294a00c28c",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_group_info/tasks/main.yml",
+ "name": "tests/integration/targets/cleanup/tasks/cleanup_snapshot.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b3a529e7fe7a88bd74d28e0d1a59444ff919861c898ce936304aa3cf905226",
+ "chksum_sha256": "c4b80c0623be8fc9b3715e96c370274a9544a722c081f2cd176964e403eb70e3",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_group_info/defaults",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/cleanup/tasks/cleanup_ssh_key.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "26d0dc382638376f115608d46bba80b2dd36ec96d9d290115c931051532d3f76",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_group_info/defaults/main.yml",
+ "name": "tests/integration/targets/cleanup/tasks/cleanup_instance.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "10b22387a8147bd98ea199fa7e8866837cb3742dd173a2bb2f1c4bfefb326741",
+ "chksum_sha256": "ac852429779c61e3db9dcb59dbf066ee2c5e169c54665da6a679c4b60397d2fd",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_group_info/aliases",
+ "name": "tests/integration/targets/cleanup/tasks/cleanup_startup_script.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
+ "chksum_sha256": "d3f428f0cdeb1bf14cac364c19580a61a845672a552d293c96b23e8f860764f7",
"format": 1
},
{
- "name": "tests/integration/targets/dns_domain_info",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/cleanup/tasks/cleanup_all.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "1b38a4d3f009a2ea2f95e575e4164012bae9e741221b5cb947f49910752980ed",
"format": 1
},
{
- "name": "tests/integration/targets/dns_domain_info/meta",
+ "name": "tests/integration/targets/cleanup/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/dns_domain_info/meta/main.yml",
+ "name": "tests/integration/targets/cleanup/meta/main.yml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
"format": 1
},
{
- "name": "tests/integration/targets/dns_domain_info/tasks",
+ "name": "tests/integration/targets/cleanup/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/dns_domain_info/tasks/tests.yml",
+ "name": "tests/integration/targets/cleanup/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2c3ab8f42c86c9cc15d661adfc440632272d45408ce3bae07746b2756df93d6c",
+ "chksum_sha256": "b9f3ec8b4e4bf39dc1301f7187db3d08097bedf77f3364c79f2044ffd5db9d12",
"format": 1
},
{
- "name": "tests/integration/targets/dns_domain_info/tasks/main.yml",
+ "name": "tests/integration/targets/user",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/user/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "87dc91ac04c12df5f20f7535d800a42a2e1336b2310b9371c2a59af44f078ce8",
+ "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
"format": 1
},
{
- "name": "tests/integration/targets/dns_domain_info/defaults",
+ "name": "tests/integration/targets/user/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/dns_domain_info/defaults/main.yml",
+ "name": "tests/integration/targets/user/tasks/tests.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "51c5fca4c8d9360a6379827ab054a14a88137dbf75709539bf2deada8421a92f",
+ "chksum_sha256": "c759330d083de4c1388c2a495db6e58cb2e8de6ff80d3c54ee1982e020d4cb1a",
"format": 1
},
{
- "name": "tests/integration/targets/dns_domain_info/aliases",
+ "name": "tests/integration/targets/user/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
+ "chksum_sha256": "5caa8e411c0d84429e587e397e283e5c989c4ac2ef39965c255fbb5d18e1b3fa",
"format": 1
},
{
- "name": "tests/integration/targets/reserved_ip",
+ "name": "tests/integration/targets/user/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/reserved_ip/meta",
+ "name": "tests/integration/targets/user/meta/main.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/user/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/reserved_ip/meta/main.yml",
+ "name": "tests/integration/targets/user/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
+ "chksum_sha256": "a554c895ee456e6b7a52b47944b6dde91718e705feae1b17240f11e709d65836",
"format": 1
},
{
- "name": "tests/integration/targets/reserved_ip/tasks",
+ "name": "tests/integration/targets/os_info",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/reserved_ip/tasks/tests.yml",
+ "name": "tests/integration/targets/os_info/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "6a9fe617e2d8003cbe4538d2c1f45f27c75001c7687d17e511e3fe15186b94cf",
+ "chksum_sha256": "dc2ce6b1319ce6a5d14015a0ce0e61945a5fcb9f4b1cc1e3f2705ba7a5d4b466",
"format": 1
},
{
- "name": "tests/integration/targets/reserved_ip/tasks/main.yml",
+ "name": "tests/integration/targets/os_info/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/os_info/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ca173941bf646f76a6f8336f10b09a629e352bb355a51f62fb5c1440c55bb204",
+ "chksum_sha256": "ab3741f185714f47703a62373e1c60d4555a7cb0604b018ab681cab0bd63568a",
"format": 1
},
{
- "name": "tests/integration/targets/reserved_ip/defaults",
+ "name": "tests/integration/targets/instance_info",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/reserved_ip/defaults/main.yml",
+ "name": "tests/integration/targets/instance_info/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e6c4fed7783e0ab2811bd7ca6dcbf1708485d91fca4ace1397150e79159bd327",
+ "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
"format": 1
},
{
- "name": "tests/integration/targets/reserved_ip/aliases",
+ "name": "tests/integration/targets/instance_info/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/instance_info/tasks/tests.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "a2c21f33974001d7c039a003393e9f0a546723be4349c50851c639aba0f77117",
"format": 1
},
{
- "name": "tests/integration/targets/vpc_info",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/instance_info/tasks/main.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "158f45cabb1bb2f67511f1885c51b65872642bbcaa2915b8605d1f763ce1f832",
"format": 1
},
{
- "name": "tests/integration/targets/vpc_info/meta",
+ "name": "tests/integration/targets/instance_info/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/vpc_info/meta/main.yml",
+ "name": "tests/integration/targets/instance_info/meta/main.yml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
"format": 1
},
{
- "name": "tests/integration/targets/vpc_info/tasks",
+ "name": "tests/integration/targets/instance_info/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/vpc_info/tasks/tests.yml",
+ "name": "tests/integration/targets/instance_info/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7c2a325b079272307d33edbeaa4492a3facbc9c31bb071f32d9fc7bde9ddd567",
+ "chksum_sha256": "3a42de11dbbb07c09b93bfbb2d99d641f66dacb9aa96752234cb55db517f9e89",
"format": 1
},
{
- "name": "tests/integration/targets/vpc_info/tasks/main.yml",
+ "name": "tests/integration/targets/block_storage",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/block_storage/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "72e3197710fa41991bd5beaeb212d73e3833ee807ae8d30c9d83fcf775180101",
+ "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
"format": 1
},
{
- "name": "tests/integration/targets/vpc_info/defaults",
+ "name": "tests/integration/targets/block_storage/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/vpc_info/defaults/main.yml",
+ "name": "tests/integration/targets/block_storage/tasks/tests.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "6d0f6b5b87f1f2f2d734750fa026610f0ecccbca7d6c7ccedf1d394daa2c0787",
+ "chksum_sha256": "6e9e3942703ae1ca3cfa4a8a3017fc54c0f627edc41fbcf143ea71e4c6782b72",
"format": 1
},
{
- "name": "tests/integration/targets/vpc_info/aliases",
+ "name": "tests/integration/targets/block_storage/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
+ "chksum_sha256": "52660389f63f9f8b0b0faa24bdbbf8f28ce264f8fceb31a44e4bd0aca32a904d",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_group",
+ "name": "tests/integration/targets/block_storage/tasks/tests_attach_to_server.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "de45063f8ce9cd2b9a7554cdcf7f1c9596f50cd1376ef69f3bd042481b321c9a",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/block_storage/tasks/failures.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "70a2828cfc6a42aea15ca265c29c3b7c0489427f1e009ebc3e8668ce5dd505f1",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/block_storage/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/firewall_group/meta",
+ "name": "tests/integration/targets/block_storage/defaults/main.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "0015e74d8ad929993ebf0840e53120cf208ae9302ddbcb4c03bef85428cd8052",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/user_info",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/firewall_group/meta/main.yml",
+ "name": "tests/integration/targets/user_info/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
+ "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_group/tasks",
+ "name": "tests/integration/targets/user_info/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/firewall_group/tasks/tests.yml",
+ "name": "tests/integration/targets/user_info/tasks/tests.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "6f163960098273136e9b6baf9c853e6178c8c34329d584e0b33e41250cd19483",
+ "chksum_sha256": "e48cbcad848aa1212a02ed6db988f09267d32b6195eed356882eed9f2e4dd39a",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_group/tasks/main.yml",
+ "name": "tests/integration/targets/user_info/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b3a529e7fe7a88bd74d28e0d1a59444ff919861c898ce936304aa3cf905226",
+ "chksum_sha256": "5caa8e411c0d84429e587e397e283e5c989c4ac2ef39965c255fbb5d18e1b3fa",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_group/defaults",
+ "name": "tests/integration/targets/user_info/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/firewall_group/defaults/main.yml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "ce7cb163662ec14873afee9b83c34874bd0eaf496890d7b7b35d488bf094461b",
- "format": 1
- },
- {
- "name": "tests/integration/targets/firewall_group/aliases",
+ "name": "tests/integration/targets/user_info/meta/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
+ "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
"format": 1
},
{
- "name": "tests/integration/targets/ssh_key",
+ "name": "tests/integration/targets/user_info/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ssh_key/meta",
+ "name": "tests/integration/targets/user_info/defaults/main.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "e9a72a5ae88e71690565abf81fe1845976e98e4b60c6025f0679921da414ceac",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/region_info",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ssh_key/meta/main.yml",
+ "name": "tests/integration/targets/region_info/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
+ "chksum_sha256": "dc2ce6b1319ce6a5d14015a0ce0e61945a5fcb9f4b1cc1e3f2705ba7a5d4b466",
"format": 1
},
{
- "name": "tests/integration/targets/ssh_key/tasks",
+ "name": "tests/integration/targets/region_info/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ssh_key/tasks/tests.yml",
+ "name": "tests/integration/targets/region_info/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8352dbed6ddb1ceecbc7f46734bfe3db7d6dda7049f6ca13601847227e524fb0",
+ "chksum_sha256": "1e9238ef3b628e9be3f45f1907eb44d53a34f973b548064abff1f36d525a8bab",
"format": 1
},
{
- "name": "tests/integration/targets/ssh_key/tasks/main.yml",
+ "name": "tests/integration/targets/vpc2",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/vpc2/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "44ed0d376e3a684d03aca3056db7bd74b63451f5334639ae37970b4b468e900d",
+ "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
"format": 1
},
{
- "name": "tests/integration/targets/ssh_key/defaults",
+ "name": "tests/integration/targets/vpc2/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/ssh_key/defaults/main.yml",
+ "name": "tests/integration/targets/vpc2/tasks/tests.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2db62c7b2e06217cc6a92ca02e997ef2a276460c45d37953bba64b9f2ec3078e",
+ "chksum_sha256": "d4840fa2b094d50ef00423d5572b8f373d3a1009f1a8f347f1c3c253ef6bd070",
"format": 1
},
{
- "name": "tests/integration/targets/ssh_key/aliases",
+ "name": "tests/integration/targets/vpc2/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
+ "chksum_sha256": "ab1cd92c34ca65a13c41096db34aeb9ecae00bb54d5e1cde618e7ca290a3ee8b",
"format": 1
},
{
- "name": "tests/integration/targets/block_storage_info",
+ "name": "tests/integration/targets/vpc2/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/block_storage_info/tasks",
+ "name": "tests/integration/targets/vpc2/meta/main.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/vpc2/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/block_storage_info/tasks/tests.yml",
+ "name": "tests/integration/targets/vpc2/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4725bc0f78af0b6fafd93ae473fdace0c3baa28527e7b65e4e63c7d5bf5790ee",
+ "chksum_sha256": "0854a3e8751cc27484b26a8042c2aa753d83bc970654451cfbb129194b05e82f",
"format": 1
},
{
- "name": "tests/integration/targets/block_storage_info/tasks/main.yml",
+ "name": "tests/integration/targets/startup_script",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/startup_script/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "74b565de2124e4a53853a1dc2d79d3e765bd00578f25260427c52b082a0aebba",
+ "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
"format": 1
},
{
- "name": "tests/integration/targets/block_storage_info/defaults",
+ "name": "tests/integration/targets/startup_script/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/block_storage_info/defaults/main.yml",
+ "name": "tests/integration/targets/startup_script/tasks/tests.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7690ab5d3be0f969367e46923242bed255c52807b27c7ca97c492002e61e4056",
+ "chksum_sha256": "c1e7a5d54828ea8746f35c153e693af2519b51ef74ef01a016cd7ef51b578f21",
"format": 1
},
{
- "name": "tests/integration/targets/block_storage_info/aliases",
+ "name": "tests/integration/targets/startup_script/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
- "format": 1
- },
- {
- "name": "tests/integration/targets/dns_record",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "chksum_sha256": "d5738ca7eeca0a524a80197d73b1d677913903103d5bea0663c8fdc66eb6c09c",
"format": 1
},
{
- "name": "tests/integration/targets/dns_record/meta",
+ "name": "tests/integration/targets/startup_script/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/dns_record/meta/main.yml",
+ "name": "tests/integration/targets/startup_script/meta/main.yml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
"format": 1
},
{
- "name": "tests/integration/targets/dns_record/tasks",
+ "name": "tests/integration/targets/startup_script/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/dns_record/tasks/update_record.yml",
+ "name": "tests/integration/targets/startup_script/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "69f1046400a3db0688ab921d4b1b707bf7fdf26ab133654d7e372627078b03c5",
+ "chksum_sha256": "8825f1598fe036be8c0f7259ba05ad408acb9a9bf106da582a1e0f58040e1c40",
"format": 1
},
{
- "name": "tests/integration/targets/dns_record/tasks/record.yml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "ac2ce46179ea10858a1a055df4fa27652e122ca7f0cc19b7494a3028b6894af9",
+ "name": "tests/integration/targets/reserved_ip",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/dns_record/tasks/tests.yml",
+ "name": "tests/integration/targets/reserved_ip/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b17ff013393d7b1d288a2d6fc4f2c4befddd5684e41544862fc11f4db00310c5",
+ "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
"format": 1
},
{
- "name": "tests/integration/targets/dns_record/tasks/test_fail_multiple.yml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "efc91209a8b8d5f616816c27ee3542c437695ad7902df49d110786a75381de9a",
+ "name": "tests/integration/targets/reserved_ip/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/dns_record/tasks/create_record.yml",
+ "name": "tests/integration/targets/reserved_ip/tasks/tests.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "45ab07fd1caf14b7427743b72e74713dcc13374067223908edfa83415c6d187e",
+ "chksum_sha256": "ac3fc3665287a74b94fdbfc1a34f8fc64069c1c08d9f7121f9e6282ffefa978e",
"format": 1
},
{
- "name": "tests/integration/targets/dns_record/tasks/remove_record.yml",
+ "name": "tests/integration/targets/reserved_ip/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "40ab1dc2190120e706d7dd5a51dc8dd3ce8bc7c3f347f24fe985cc77ac310ff6",
+ "chksum_sha256": "ca173941bf646f76a6f8336f10b09a629e352bb355a51f62fb5c1440c55bb204",
"format": 1
},
{
- "name": "tests/integration/targets/dns_record/tasks/main.yml",
+ "name": "tests/integration/targets/reserved_ip/meta",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/reserved_ip/meta/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2461155c079932287a72670c97c3251a2821e8ab580d9ca305fa456b02cdff13",
+ "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
"format": 1
},
{
- "name": "tests/integration/targets/dns_record/defaults",
+ "name": "tests/integration/targets/reserved_ip/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/dns_record/defaults/main.yml",
+ "name": "tests/integration/targets/reserved_ip/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1b5619716102d8ec920db97a6988787c780ee277398afe38af1edc7b0af68a6a",
+ "chksum_sha256": "41ce444b326fc7a174514d6b0b478290cb0cb35ff665dbf8cc1c96426f1bcf53",
"format": 1
},
{
- "name": "tests/integration/targets/dns_record/aliases",
+ "name": "tests/integration/targets/plan_info",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/plan_info/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
+ "chksum_sha256": "dc2ce6b1319ce6a5d14015a0ce0e61945a5fcb9f4b1cc1e3f2705ba7a5d4b466",
"format": 1
},
{
- "name": "tests/integration/targets/user_info",
+ "name": "tests/integration/targets/plan_info/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/user_info/meta",
+ "name": "tests/integration/targets/plan_info/tasks/main.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "501533396ed8009dc79e310c95d764591704b6cd32091ee08eebd005f8a4b87b",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ssh_key_info",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/user_info/meta/main.yml",
+ "name": "tests/integration/targets/ssh_key_info/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
+ "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
"format": 1
},
{
- "name": "tests/integration/targets/user_info/tasks",
+ "name": "tests/integration/targets/ssh_key_info/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/user_info/tasks/tests.yml",
+ "name": "tests/integration/targets/ssh_key_info/tasks/tests.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e48cbcad848aa1212a02ed6db988f09267d32b6195eed356882eed9f2e4dd39a",
+ "chksum_sha256": "8a08daf014910331e76b5386c45206e2bb3448692f153dd0e28afba215660fc2",
"format": 1
},
{
- "name": "tests/integration/targets/user_info/tasks/main.yml",
+ "name": "tests/integration/targets/ssh_key_info/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5caa8e411c0d84429e587e397e283e5c989c4ac2ef39965c255fbb5d18e1b3fa",
+ "chksum_sha256": "44ed0d376e3a684d03aca3056db7bd74b63451f5334639ae37970b4b468e900d",
"format": 1
},
{
- "name": "tests/integration/targets/user_info/defaults",
+ "name": "tests/integration/targets/ssh_key_info/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/user_info/defaults/main.yml",
+ "name": "tests/integration/targets/ssh_key_info/meta/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e9a72a5ae88e71690565abf81fe1845976e98e4b60c6025f0679921da414ceac",
+ "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
"format": 1
},
{
- "name": "tests/integration/targets/user_info/aliases",
+ "name": "tests/integration/targets/ssh_key_info/defaults",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ssh_key_info/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
+ "chksum_sha256": "f09f3081e9a29164ed5d17114a52e97f2b8190d31c8c99cd23601d9f53c50e01",
"format": 1
},
{
- "name": "tests/integration/targets/plan_metal_info",
+ "name": "tests/integration/targets/firewall_group_info",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/plan_metal_info/tasks",
+ "name": "tests/integration/targets/firewall_group_info/aliases",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/firewall_group_info/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/plan_metal_info/tasks/main.yml",
+ "name": "tests/integration/targets/firewall_group_info/tasks/tests.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "30fa2cd68fb86755e1ba3ba2ef676feea82c54901bfaa77897364e2877d2d8af",
+ "chksum_sha256": "dae200ffc061db7868ab082d3d5d6c1cc17c81d365d81a95eda5e6854bb08da3",
"format": 1
},
{
- "name": "tests/integration/targets/plan_metal_info/aliases",
+ "name": "tests/integration/targets/firewall_group_info/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "dc2ce6b1319ce6a5d14015a0ce0e61945a5fcb9f4b1cc1e3f2705ba7a5d4b466",
+ "chksum_sha256": "e3b3a529e7fe7a88bd74d28e0d1a59444ff919861c898ce936304aa3cf905226",
"format": 1
},
{
- "name": "tests/integration/targets/account_info",
+ "name": "tests/integration/targets/firewall_group_info/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/account_info/tasks",
+ "name": "tests/integration/targets/firewall_group_info/meta/main.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/firewall_group_info/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/account_info/tasks/main.yml",
+ "name": "tests/integration/targets/firewall_group_info/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2b49a94c64afb9d4d95f3cacf9ea2667390dd014585eb65ff4d15e026e346e2e",
+ "chksum_sha256": "10b22387a8147bd98ea199fa7e8866837cb3742dd173a2bb2f1c4bfefb326741",
"format": 1
},
{
- "name": "tests/integration/targets/account_info/aliases",
+ "name": "tests/integration/targets/snapshot_info",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/snapshot_info/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a9f61a9487700a83508395d74ce06374baecfcaf4306b30f008d8b726c626a69",
+ "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
"format": 1
},
{
- "name": "tests/integration/targets/os_info",
+ "name": "tests/integration/targets/snapshot_info/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/os_info/tasks",
+ "name": "tests/integration/targets/snapshot_info/tasks/tests.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "a175aee81120e75678aa6477456460b03200a4ef79db94e0828fe737bfa65afa",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/snapshot_info/tasks/main.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "00c1b19510489064de57f159c3cfae2ed964ad5064e770cff0849b5243cc417e",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/snapshot_info/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/os_info/tasks/main.yml",
+ "name": "tests/integration/targets/snapshot_info/meta/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ab3741f185714f47703a62373e1c60d4555a7cb0604b018ab681cab0bd63568a",
+ "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
"format": 1
},
{
- "name": "tests/integration/targets/os_info/aliases",
+ "name": "tests/integration/targets/snapshot_info/defaults",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/snapshot_info/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "dc2ce6b1319ce6a5d14015a0ce0e61945a5fcb9f4b1cc1e3f2705ba7a5d4b466",
+ "chksum_sha256": "f7167834ffb188e37b48bf50ed7112fa6b3854c473f9a27d925f0ff059aa2686",
"format": 1
},
{
- "name": "tests/integration/targets/block_storage",
+ "name": "tests/integration/targets/dns_domain",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/block_storage/tasks",
+ "name": "tests/integration/targets/dns_domain/aliases",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/dns_domain/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/block_storage/tasks/tests.yml",
+ "name": "tests/integration/targets/dns_domain/tasks/tests.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "6e9e3942703ae1ca3cfa4a8a3017fc54c0f627edc41fbcf143ea71e4c6782b72",
+ "chksum_sha256": "40df39c4e807905c239b84032700f2f8afef295404a81d33f456bb8d7d2de2db",
"format": 1
},
{
- "name": "tests/integration/targets/block_storage/tasks/failures.yml",
+ "name": "tests/integration/targets/dns_domain/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "70a2828cfc6a42aea15ca265c29c3b7c0489427f1e009ebc3e8668ce5dd505f1",
+ "chksum_sha256": "2461155c079932287a72670c97c3251a2821e8ab580d9ca305fa456b02cdff13",
"format": 1
},
{
- "name": "tests/integration/targets/block_storage/tasks/main.yml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "52660389f63f9f8b0b0faa24bdbbf8f28ce264f8fceb31a44e4bd0aca32a904d",
+ "name": "tests/integration/targets/dns_domain/meta",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/block_storage/tasks/tests_attach_to_server.yml",
+ "name": "tests/integration/targets/dns_domain/meta/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "de45063f8ce9cd2b9a7554cdcf7f1c9596f50cd1376ef69f3bd042481b321c9a",
+ "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
"format": 1
},
{
- "name": "tests/integration/targets/block_storage/defaults",
+ "name": "tests/integration/targets/dns_domain/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/block_storage/defaults/main.yml",
+ "name": "tests/integration/targets/dns_domain/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0015e74d8ad929993ebf0840e53120cf208ae9302ddbcb4c03bef85428cd8052",
+ "chksum_sha256": "897005cc5012d5148cb547b674f0cdd1883702dd5bf7e06ce57e0df4937eee31",
"format": 1
},
{
- "name": "tests/integration/targets/block_storage/aliases",
+ "name": "tests/integration/targets/ssh_key",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ssh_key/aliases",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
"format": 1
},
{
- "name": "tests/integration/targets/user",
+ "name": "tests/integration/targets/ssh_key/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/user/meta",
+ "name": "tests/integration/targets/ssh_key/tasks/tests.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8352dbed6ddb1ceecbc7f46734bfe3db7d6dda7049f6ca13601847227e524fb0",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ssh_key/tasks/main.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "44ed0d376e3a684d03aca3056db7bd74b63451f5334639ae37970b4b468e900d",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/ssh_key/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/user/meta/main.yml",
+ "name": "tests/integration/targets/ssh_key/meta/main.yml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
"format": 1
},
{
- "name": "tests/integration/targets/user/tasks",
+ "name": "tests/integration/targets/ssh_key/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/user/tasks/tests.yml",
+ "name": "tests/integration/targets/ssh_key/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c759330d083de4c1388c2a495db6e58cb2e8de6ff80d3c54ee1982e020d4cb1a",
+ "chksum_sha256": "2db62c7b2e06217cc6a92ca02e997ef2a276460c45d37953bba64b9f2ec3078e",
"format": 1
},
{
- "name": "tests/integration/targets/user/tasks/main.yml",
+ "name": "tests/integration/targets/vpc2_info",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/vpc2_info/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5caa8e411c0d84429e587e397e283e5c989c4ac2ef39965c255fbb5d18e1b3fa",
+ "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
"format": 1
},
{
- "name": "tests/integration/targets/user/defaults",
+ "name": "tests/integration/targets/vpc2_info/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/user/defaults/main.yml",
+ "name": "tests/integration/targets/vpc2_info/tasks/tests.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a554c895ee456e6b7a52b47944b6dde91718e705feae1b17240f11e709d65836",
+ "chksum_sha256": "b3b6826f2bf93e2a16351af89d4b9f8f853e1306da6d750c43161157ba723e3a",
"format": 1
},
{
- "name": "tests/integration/targets/user/aliases",
+ "name": "tests/integration/targets/vpc2_info/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
+ "chksum_sha256": "ab1cd92c34ca65a13c41096db34aeb9ecae00bb54d5e1cde618e7ca290a3ee8b",
"format": 1
},
{
- "name": "tests/integration/targets/dns_domain",
+ "name": "tests/integration/targets/vpc2_info/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/dns_domain/meta",
+ "name": "tests/integration/targets/vpc2_info/meta/main.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/vpc2_info/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/dns_domain/meta/main.yml",
+ "name": "tests/integration/targets/vpc2_info/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
+ "chksum_sha256": "c222144728517c257e2605781d462d26d3e5aafcb631644dd48e51f3447562b1",
"format": 1
},
{
- "name": "tests/integration/targets/dns_domain/tasks",
+ "name": "tests/integration/targets/dns_record",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/dns_domain/tasks/tests.yml",
+ "name": "tests/integration/targets/dns_record/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "40df39c4e807905c239b84032700f2f8afef295404a81d33f456bb8d7d2de2db",
+ "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
"format": 1
},
{
- "name": "tests/integration/targets/dns_domain/tasks/main.yml",
+ "name": "tests/integration/targets/dns_record/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/dns_record/tasks/tests.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "b17ff013393d7b1d288a2d6fc4f2c4befddd5684e41544862fc11f4db00310c5",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/dns_record/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "2461155c079932287a72670c97c3251a2821e8ab580d9ca305fa456b02cdff13",
"format": 1
},
{
- "name": "tests/integration/targets/dns_domain/defaults",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/dns_record/tasks/create_record.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "d4337dc679ec9e0caacc52b9ad92f5102f2ec94b67996ff87f0689a2af2795b2",
"format": 1
},
{
- "name": "tests/integration/targets/dns_domain/defaults/main.yml",
+ "name": "tests/integration/targets/dns_record/tasks/remove_record.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "897005cc5012d5148cb547b674f0cdd1883702dd5bf7e06ce57e0df4937eee31",
+ "chksum_sha256": "8ad3e5a5d87d7dd4872f0a2cb01d7ae045494079415e07deab5f5e66a64985df",
"format": 1
},
{
- "name": "tests/integration/targets/dns_domain/aliases",
+ "name": "tests/integration/targets/dns_record/tasks/test_fail_multiple.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
+ "chksum_sha256": "efc91209a8b8d5f616816c27ee3542c437695ad7902df49d110786a75381de9a",
"format": 1
},
{
- "name": "tests/integration/targets/snapshot_info",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/dns_record/tasks/record.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "ac2ce46179ea10858a1a055df4fa27652e122ca7f0cc19b7494a3028b6894af9",
"format": 1
},
{
- "name": "tests/integration/targets/snapshot_info/meta",
+ "name": "tests/integration/targets/dns_record/tasks/update_record.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "c32ca3ea4f65cebd89f11efd6f8abdaf29c1e8b5fb3ab92536ed37a46f04296e",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/dns_record/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/snapshot_info/meta/main.yml",
+ "name": "tests/integration/targets/dns_record/meta/main.yml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
"format": 1
},
{
- "name": "tests/integration/targets/snapshot_info/tasks",
+ "name": "tests/integration/targets/dns_record/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/snapshot_info/tasks/tests.yml",
+ "name": "tests/integration/targets/dns_record/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7e148c20a4f98ae35e0d5f4ae918dd4ace006c3522d2f4a28d60e502c1742212",
+ "chksum_sha256": "2ad76431a193d7ad5a432520302e3a36b8d5bea46f16d60a034f094b061c0378",
"format": 1
},
{
- "name": "tests/integration/targets/snapshot_info/tasks/main.yml",
+ "name": "tests/integration/targets/firewall_rule",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/firewall_rule/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "00c1b19510489064de57f159c3cfae2ed964ad5064e770cff0849b5243cc417e",
+ "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
"format": 1
},
{
- "name": "tests/integration/targets/snapshot_info/defaults",
+ "name": "tests/integration/targets/firewall_rule/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/snapshot_info/defaults/main.yml",
+ "name": "tests/integration/targets/firewall_rule/tasks/tests.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f7167834ffb188e37b48bf50ed7112fa6b3854c473f9a27d925f0ff059aa2686",
+ "chksum_sha256": "3414e6f7e40e8b97ec6fa43d1c10284fb9e2dc05c83fba44fb7eda26067efb87",
"format": 1
},
{
- "name": "tests/integration/targets/snapshot_info/aliases",
+ "name": "tests/integration/targets/firewall_rule/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
+ "chksum_sha256": "754db3bbf45a9b97110c0523b140919d4540ebf1ab2d0191616f77955dde7ece",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_rule",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/firewall_rule/tasks/rule_absent.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "37f1c494e66dd75bd0ad6faab6de98e4be343d282d2f5c9ae3f1210ac7fe720e",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/firewall_rule/tasks/rule_present.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "a210bb759c2823ab8feadb105f9a286b1cb21d3f6bcb2837857d3e9de02758ad",
"format": 1
},
{
@@ -1534,178 +1765,220 @@
"format": 1
},
{
- "name": "tests/integration/targets/firewall_rule/tasks",
+ "name": "tests/integration/targets/firewall_rule/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/firewall_rule/tasks/tests.yml",
+ "name": "tests/integration/targets/firewall_rule/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3414e6f7e40e8b97ec6fa43d1c10284fb9e2dc05c83fba44fb7eda26067efb87",
+ "chksum_sha256": "04a36ef586390a4ccd668b3b583ddca434c9a34e971f55334d4a06e6a4c2972d",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_rule/tasks/rule_absent.yml",
+ "name": "tests/integration/targets/snapshot",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/snapshot/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8406c5b815036b6bf808510a93d794bdf77d7ca493ae4af74b6d02d60ea873bf",
+ "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_rule/tasks/main.yml",
+ "name": "tests/integration/targets/snapshot/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/snapshot/tasks/tests.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "754db3bbf45a9b97110c0523b140919d4540ebf1ab2d0191616f77955dde7ece",
+ "chksum_sha256": "0284c806f32966951ab87baa051d3be2fe9a8839e37c55c760c695730db110cd",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_rule/tasks/rule_present.yml",
+ "name": "tests/integration/targets/snapshot/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "52183ff79e735f2c90e8bf47e8bd2218b3fe12e0beb4755f1c328fc2addd062a",
+ "chksum_sha256": "7ce50b2181ffe6e2121e1692900fdb107636f90e048c195327fcc13737816a31",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_rule/defaults",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/snapshot/tasks/absent.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "63b358651e57593af74d74bf7ab7e7812a77443ba1628f321830199245f55760",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_rule/defaults/main.yml",
+ "name": "tests/integration/targets/snapshot/tasks/failures.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "99a6c0a603a706c1beeb8e0305729328dcee927b8dccabf55d2ca241752069a8",
+ "chksum_sha256": "bb2a0533a657d8ccdc7d750a4e6607648123016a127b9a8337c92bcfd4faf7dc",
"format": 1
},
{
- "name": "tests/integration/targets/firewall_rule/aliases",
+ "name": "tests/integration/targets/snapshot/tasks/present.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
+ "chksum_sha256": "30c0334aed12e3f1d1d319de71c91e8faa7e90c0ba23ea8af12e7f66eb1dfb9f",
"format": 1
},
{
- "name": "tests/integration/targets/startup_script",
+ "name": "tests/integration/targets/snapshot/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/startup_script/meta",
+ "name": "tests/integration/targets/snapshot/meta/main.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/snapshot/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/startup_script/meta/main.yml",
+ "name": "tests/integration/targets/snapshot/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
+ "chksum_sha256": "6a784801be127bde96b005e775b8981f116875928902348ec6c9384de1b5097b",
"format": 1
},
{
- "name": "tests/integration/targets/startup_script/tasks",
+ "name": "tests/integration/targets/bare_metal",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/startup_script/tasks/tests.yml",
+ "name": "tests/integration/targets/bare_metal/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c1e7a5d54828ea8746f35c153e693af2519b51ef74ef01a016cd7ef51b578f21",
+ "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
"format": 1
},
{
- "name": "tests/integration/targets/startup_script/tasks/main.yml",
+ "name": "tests/integration/targets/bare_metal/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/bare_metal/tasks/tests.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d5738ca7eeca0a524a80197d73b1d677913903103d5bea0663c8fdc66eb6c09c",
+ "chksum_sha256": "58cb4e3cf4e146c1eb86b2f10253646a22689af81dec9278dc93352fc6272a80",
"format": 1
},
{
- "name": "tests/integration/targets/startup_script/defaults",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/bare_metal/tasks/main.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "d30996ac75b7862f1073cacc39004f74e750fae54df70f525a802e68a4066ea6",
"format": 1
},
{
- "name": "tests/integration/targets/startup_script/defaults/main.yml",
+ "name": "tests/integration/targets/bare_metal/tasks/absent.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8825f1598fe036be8c0f7259ba05ad408acb9a9bf106da582a1e0f58040e1c40",
+ "chksum_sha256": "f045dfc5de15b9747667277882412bd9da7815995060250a08eb63164586884d",
"format": 1
},
{
- "name": "tests/integration/targets/startup_script/aliases",
+ "name": "tests/integration/targets/bare_metal/tasks/failures.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
+ "chksum_sha256": "142e80f17df5581c5482614f83a12bb3d36cd32c6d23a40ba54257bd14c198e5",
"format": 1
},
{
- "name": "tests/integration/targets/vpc",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/bare_metal/tasks/present.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "d2dd0ff9d8f5d37c43e8c8375cbda630bfdfab96dbe851fefdf38a843b9758df",
"format": 1
},
{
- "name": "tests/integration/targets/vpc/meta",
+ "name": "tests/integration/targets/bare_metal/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/vpc/meta/main.yml",
+ "name": "tests/integration/targets/bare_metal/meta/main.yml",
"ftype": "file",
"chksum_type": "sha256",
"chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
"format": 1
},
{
- "name": "tests/integration/targets/vpc/tasks",
+ "name": "tests/integration/targets/bare_metal/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/vpc/tasks/tests.yml",
+ "name": "tests/integration/targets/bare_metal/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7684abfe6f192643bfff3c6694ee6780e809801f899001a32b13c2757c374399",
+ "chksum_sha256": "14136ead44466e15ba46bd96cc8e1e838ba69f7201ab333e18fd6cb3f2a77071",
"format": 1
},
{
- "name": "tests/integration/targets/vpc/tasks/main.yml",
+ "name": "tests/integration/targets/plan_metal_info",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/plan_metal_info/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "72e3197710fa41991bd5beaeb212d73e3833ee807ae8d30c9d83fcf775180101",
+ "chksum_sha256": "dc2ce6b1319ce6a5d14015a0ce0e61945a5fcb9f4b1cc1e3f2705ba7a5d4b466",
"format": 1
},
{
- "name": "tests/integration/targets/vpc/defaults",
+ "name": "tests/integration/targets/plan_metal_info/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/vpc/defaults/main.yml",
+ "name": "tests/integration/targets/plan_metal_info/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "6d0f6b5b87f1f2f2d734750fa026610f0ecccbca7d6c7ccedf1d394daa2c0787",
+ "chksum_sha256": "30fa2cd68fb86755e1ba3ba2ef676feea82c54901bfaa77897364e2877d2d8af",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/vpc",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
@@ -1716,584 +1989,675 @@
"format": 1
},
{
- "name": "tests/integration/targets/cleanup",
+ "name": "tests/integration/targets/vpc/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/cleanup/meta",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/vpc/tasks/tests.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "7069e3b5efc6ccdad26b5ef833d9dc2c361802f879cbfc1255ba7087d7659a1b",
"format": 1
},
{
- "name": "tests/integration/targets/cleanup/meta/main.yml",
+ "name": "tests/integration/targets/vpc/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
+ "chksum_sha256": "72e3197710fa41991bd5beaeb212d73e3833ee807ae8d30c9d83fcf775180101",
"format": 1
},
{
- "name": "tests/integration/targets/cleanup/tasks",
+ "name": "tests/integration/targets/vpc/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/cleanup/tasks/cleanup_snapshot.yml",
+ "name": "tests/integration/targets/vpc/meta/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c4b80c0623be8fc9b3715e96c370274a9544a722c081f2cd176964e403eb70e3",
+ "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
"format": 1
},
{
- "name": "tests/integration/targets/cleanup/tasks/cleanup_user.yml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "d045ec23fee0ba28312d3a62b2c177e40e2991bafd1363f4862585f2cbdcfb5b",
+ "name": "tests/integration/targets/vpc/defaults",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/cleanup/tasks/cleanup_reserved_ip.yml",
+ "name": "tests/integration/targets/vpc/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7f55ef9910de1c95c3f152822b02b1dcc77bc347c559f4d0ea9850ed67ed0466",
+ "chksum_sha256": "0d8a5b2015a66fe090ea2ae5d0e5e654ccbcef2676f34978022ef05b2bb1ca92",
"format": 1
},
{
- "name": "tests/integration/targets/cleanup/tasks/cleanup_block_storage.yml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "f1b0b7013c9ed7e03d27d7f213415654e0e57b204526029921416e1722dd8c82",
+ "name": "tests/integration/targets/vpc_info",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/cleanup/tasks/cleanup_vpc.yml",
+ "name": "tests/integration/targets/vpc_info/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8cb8e6f9ea326d780e4565a67a967911fdf9ca09a039b904b600f4674955eb59",
+ "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
"format": 1
},
{
- "name": "tests/integration/targets/cleanup/tasks/cleanup_instance.yml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "ac852429779c61e3db9dcb59dbf066ee2c5e169c54665da6a679c4b60397d2fd",
+ "name": "tests/integration/targets/vpc_info/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/cleanup/tasks/cleanup_network.yml",
+ "name": "tests/integration/targets/vpc_info/tasks/tests.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1c6f111d899836a496e790770077aa92db40ceca90633a5d5b72200a388dce2e",
+ "chksum_sha256": "c91ecbfd0f3d0c77fc3e66dcfd9ade5b549f078908c75cd50b91356ef2dfab9d",
"format": 1
},
{
- "name": "tests/integration/targets/cleanup/tasks/cleanup_firewall_group.yml",
+ "name": "tests/integration/targets/vpc_info/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c0c8fb99ae5f40480ba7b0da24f35632388c3865108d7d5148e87dace9adc816",
+ "chksum_sha256": "72e3197710fa41991bd5beaeb212d73e3833ee807ae8d30c9d83fcf775180101",
"format": 1
},
{
- "name": "tests/integration/targets/cleanup/tasks/cleanup_startup_script.yml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "d3f428f0cdeb1bf14cac364c19580a61a845672a552d293c96b23e8f860764f7",
+ "name": "tests/integration/targets/vpc_info/meta",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/cleanup/tasks/cleanup_dns_domain.yml",
+ "name": "tests/integration/targets/vpc_info/meta/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0f70151df2fe2eb1b434fccf8e2d8eba7e13db7cb110520c1e69784499bdc2a8",
+ "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
"format": 1
},
{
- "name": "tests/integration/targets/cleanup/tasks/cleanup_ssh_key.yml",
+ "name": "tests/integration/targets/vpc_info/defaults",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/vpc_info/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "26d0dc382638376f115608d46bba80b2dd36ec96d9d290115c931051532d3f76",
+ "chksum_sha256": "6d0f6b5b87f1f2f2d734750fa026610f0ecccbca7d6c7ccedf1d394daa2c0787",
"format": 1
},
{
- "name": "tests/integration/targets/cleanup/defaults",
+ "name": "tests/integration/targets/_reset_cloud",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/integration/targets/cleanup/defaults/main.yml",
+ "name": "tests/integration/targets/_reset_cloud/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b9f3ec8b4e4bf39dc1301f7187db3d08097bedf77f3364c79f2044ffd5db9d12",
+ "chksum_sha256": "ae3eb2d8226aaf0068fe84475bc84c6ae7b8c66e0784a49375aed53840917528",
"format": 1
},
{
- "name": "tests/integration/targets/cleanup/aliases",
+ "name": "tests/integration/targets/_reset_cloud/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/_reset_cloud/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e084a3683ef795d1cdbf5e9b253f2ca1f783ae0d0d6e47e419acbbc4fc80bbfa",
+ "chksum_sha256": "cbd17e8ba755f9e61076a0f5882c20bd54f1b13486cd146d9b8e1074cad50073",
"format": 1
},
{
- "name": "tests/unit",
+ "name": "tests/integration/targets/dns_domain_info",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/unit/plugins",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/integration/targets/dns_domain_info/aliases",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
"format": 1
},
{
- "name": "tests/unit/plugins/inventory",
+ "name": "tests/integration/targets/dns_domain_info/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/unit/plugins/inventory/test_vultr.py",
+ "name": "tests/integration/targets/dns_domain_info/tasks/tests.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9b938dddb400485de14daa3ea2d59d0ec96e5f8e129806e09bccf75a7af4db4d",
+ "chksum_sha256": "f83fab1071ce3750d26dd1c8daaee56a1997a16454b672c21f98aa2b8d9713fe",
"format": 1
},
{
- "name": "tests/unit/plugins/inventory/fixtures",
+ "name": "tests/integration/targets/dns_domain_info/tasks/main.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "87dc91ac04c12df5f20f7535d800a42a2e1336b2310b9371c2a59af44f078ce8",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/dns_domain_info/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "tests/unit/plugins/inventory/fixtures/empty_vultr_inventory.json",
+ "name": "tests/integration/targets/dns_domain_info/meta/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "64191612bc4b0099f55554c92444f8f71ac651b38875433e4a2a351ebb86fc1a",
+ "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
"format": 1
},
{
- "name": "tests/unit/plugins/inventory/fixtures/vultr_inventory.json",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "7966a533c5dbbe1df5eddac1ec56df52ec808b6a39303a51467dfcb74c329cc0",
+ "name": "tests/integration/targets/dns_domain_info/defaults",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/unit/plugins/inventory/fixtures/vultr_inventory_page1.json",
+ "name": "tests/integration/targets/dns_domain_info/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "004b664e8ddebb2714c97f7ef2c95be8d7b2e770089eb49b563fb321e4a79823",
+ "chksum_sha256": "51c5fca4c8d9360a6379827ab054a14a88137dbf75709539bf2deada8421a92f",
"format": 1
},
{
- "name": "tests/unit/plugins/inventory/fixtures/vultr_inventory_page2.json",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "b1151ecdeb91d94258df245931619c94dfdbee87308e8f126cef86932ea54436",
+ "name": "tests/integration/targets/block_storage_info",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "tests/unit/plugins/inventory/fixtures/unauthorized_vultr_inventory.json",
+ "name": "tests/integration/targets/block_storage_info/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "505876bcb387732db0065e9ff092c3060c8436dbe15e7ec98846899cf81603f4",
+ "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
"format": 1
},
{
- "name": "CHANGELOG.rst",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "05a68f8431655d8f086d2c5b8e93ef5b2a124ff2dfa5e8f44f647f404af16627",
+ "name": "tests/integration/targets/block_storage_info/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": ".yamllint",
+ "name": "tests/integration/targets/block_storage_info/tasks/tests.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5845e18e9f23155f423207df9abac970aed687c638620bc2c9ee06706191054b",
+ "chksum_sha256": "50adb7b185f2cdb64f1763c859b4e5e2bd32579ba9120e7ca92c6d82fdfeaee4",
"format": 1
},
{
- "name": ".gitignore",
+ "name": "tests/integration/targets/block_storage_info/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1467ad38919911ec5759af24376728faf2361c0335d52fb8bea4853e7b698b48",
+ "chksum_sha256": "74b565de2124e4a53853a1dc2d79d3e765bd00578f25260427c52b082a0aebba",
"format": 1
},
{
- "name": "CONTRIBUTING.md",
+ "name": "tests/integration/targets/block_storage_info/defaults",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/block_storage_info/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d61725d614410e2ee0a900fb0f6b6d742ad8fb689ae27c4d6a3a7f89e82fc791",
+ "chksum_sha256": "7690ab5d3be0f969367e46923242bed255c52807b27c7ca97c492002e61e4056",
"format": 1
},
{
- "name": "plugins",
+ "name": "tests/integration/targets/instance",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/modules",
+ "name": "tests/integration/targets/instance/aliases",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/instance/tasks",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/modules/region_info.py",
+ "name": "tests/integration/targets/instance/tasks/tests.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ee6e31f3192bbe6e0db69cd7efef79a3a3fee40763071aa5c674f5c6951d7bdb",
+ "chksum_sha256": "025d35e438e475b5cae504dcf1dcb8a425de2a5cbff0502018c99ad6780b2960",
"format": 1
},
{
- "name": "plugins/modules/startup_script.py",
+ "name": "tests/integration/targets/instance/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "14be407f3eb256735311fde075a3c983abb9b6932925d412e5782cec26c3e23f",
+ "chksum_sha256": "98d1c97130c60cd0b5b7594edbf892f99b2d6a5ae73fd24d71e4effdfd415de6",
"format": 1
},
{
- "name": "plugins/modules/user.py",
+ "name": "tests/integration/targets/instance/tasks/absent.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "38d3651f9b624fe512dae40c4ef24e4ccb0eae4ea9c394d260b851ff57dc8365",
+ "chksum_sha256": "2d33951d4d498963a2311fea64fdf4a1a50b39ea9712ed72b4955393fc1a90c4",
"format": 1
},
{
- "name": "plugins/modules/dns_domain_info.py",
+ "name": "tests/integration/targets/instance/tasks/reinstall.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f76e554deed6163146c291612e807058309f4553b8d5ff9798a0fabe27717307",
+ "chksum_sha256": "0cc5b6784d2d8030444d57d871f80b2f1a453132fccdeb002142eb027576ebbe",
"format": 1
},
{
- "name": "plugins/modules/os_info.py",
+ "name": "tests/integration/targets/instance/tasks/stop-start.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0143ad73c6b10692c6577730523b0159782bb6a678d3946dc920b3b758565155",
+ "chksum_sha256": "217770633862454ea3c34efe13e29e29a8fb5cd297807c8dd49065f3beec39c3",
"format": 1
},
{
- "name": "plugins/modules/account_info.py",
+ "name": "tests/integration/targets/instance/tasks/failures.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "234df324cb37004dff1e9d5847998f97304c9228e67815f05b5087ab5709e911",
+ "chksum_sha256": "5bec818fae85199334944642e17ef30a7a6b3c48e8e3705e8d7f3366993b2e0b",
"format": 1
},
{
- "name": "plugins/modules/block_storage_info.py",
+ "name": "tests/integration/targets/instance/tasks/present.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d2677e90317fc892df48133c755f1c9cf8e1281d610f43937abc54e79f78ee81",
+ "chksum_sha256": "975e38a525ca112c8f447899b09fe9e4b5ceebe602bf2c0f62225b64e8956bd4",
"format": 1
},
{
- "name": "plugins/modules/plan_info.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "3648af6b8fd69f3bb66faf265767fd39a7afd5bebd5f88964db42dc6d0d8d392",
+ "name": "tests/integration/targets/instance/meta",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/modules/firewall_rule.py",
+ "name": "tests/integration/targets/instance/meta/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1b95d2b2c729517b79ce3e06d988defa8803b75060b736279eeeec8ae0d815e0",
+ "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
"format": 1
},
{
- "name": "plugins/modules/snapshot_info.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "a60ecc36574d60168903ee239185d42e636c8d26356bb84d6c666d8ab7368e50",
+ "name": "tests/integration/targets/instance/defaults",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/modules/user_info.py",
+ "name": "tests/integration/targets/instance/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ae4e7899a1107f0d9a2dbfac410209528d687ceef6c9f587b3d78cdb974d8e7f",
+ "chksum_sha256": "559e5734fd1fe6c2402dd1d30c786b17182982d0e0492f86502963ee7bf3c737",
"format": 1
},
{
- "name": "plugins/modules/instance.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "c6c7aa932359fcc9711e838739cc1a4f22c628428f115801d8212cf9524dfc3f",
+ "name": "tests/integration/targets/object_storage",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/modules/plan_metal_info.py",
+ "name": "tests/integration/targets/object_storage/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "93bda0d2911f927951c30540a54a8da71a61a20c7f9cafc7368097d335c47aa5",
+ "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
"format": 1
},
{
- "name": "plugins/modules/startup_script_info.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "23134fcb25c56ab61a08afe195100cd4f2eb5ef14b1a8ba6bfc7b82cdea57859",
+ "name": "tests/integration/targets/object_storage/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/modules/firewall_group.py",
+ "name": "tests/integration/targets/object_storage/tasks/tests.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7e5482639e8b600dff912fc03f7b0baa24a3cfa70f807eeeeb6c1ebfcf354f94",
+ "chksum_sha256": "b59ee60ffbb614b7c66dfd76a0f6be02b21cd99b2c261ec25ab689fa8e7e68cd",
"format": 1
},
{
- "name": "plugins/modules/dns_record.py",
+ "name": "tests/integration/targets/object_storage/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4b29de118b42237350431b7bef3dbf92ff98bfe989183756aea92efb0b73589d",
+ "chksum_sha256": "c41f15bff7732e799b9337d7c29b746f96809b63e3472d1c6fa36bd0074eab0b",
"format": 1
},
{
- "name": "plugins/modules/instance_info.py",
+ "name": "tests/integration/targets/object_storage/tasks/failures.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c29fdb4fab431c06ec8eba206ce48df96c5d39c2bff0f9ca632133993bd78891",
+ "chksum_sha256": "7418967590921122fa856bbd82a918191bdca8f71db2a8d7870beeb6d68bcacf",
"format": 1
},
{
- "name": "plugins/modules/__init__.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "name": "tests/integration/targets/object_storage/defaults",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/modules/block_storage.py",
+ "name": "tests/integration/targets/object_storage/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d2a98391d3d84671552b48b0fad61811f753420f09b5b94626e511b3c74cf93f",
+ "chksum_sha256": "499f573764e0b2e21e3165103f219e007b3c74ce084ba5a5af88a8faf3c36ff8",
"format": 1
},
{
- "name": "plugins/modules/vpc_info.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "903efd1d0f822de7aaaf659d968e13e9104d6af4c3667a782efd8bf056662829",
+ "name": "tests/integration/targets/firewall_rule_info",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/modules/dns_domain.py",
+ "name": "tests/integration/targets/firewall_rule_info/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "de781d3439aba96749c83b24b29c15e1f62ac807c8cc793e08ea374ece4c3c68",
+ "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
"format": 1
},
{
- "name": "plugins/modules/firewall_rule_info.py",
+ "name": "tests/integration/targets/firewall_rule_info/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/firewall_rule_info/tasks/tests.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "267c9f763168ce7b6c938e874b4048d6492add6766406d3a6cbc3d227ed14da3",
+ "chksum_sha256": "f2b150accd2fc9a13c9cb8d4923d0727daa884bad4e78c31b39ca451eb532f92",
"format": 1
},
{
- "name": "plugins/modules/vpc.py",
+ "name": "tests/integration/targets/firewall_rule_info/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9ea848792c5ac44d5d25f366dbab63916f6797c977238ede08a2b2e08f74933b",
+ "chksum_sha256": "e3b3a529e7fe7a88bd74d28e0d1a59444ff919861c898ce936304aa3cf905226",
"format": 1
},
{
- "name": "plugins/modules/ssh_key.py",
+ "name": "tests/integration/targets/firewall_rule_info/meta",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/firewall_rule_info/meta/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5e1a8e741f196a6b080077b88aa14ec6595878108978ef230224592b161ca44b",
+ "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
"format": 1
},
{
- "name": "plugins/modules/firewall_group_info.py",
+ "name": "tests/integration/targets/firewall_rule_info/defaults",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/firewall_rule_info/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2e4dce46bd2ddbbd7ded11f11f8d4b57f15f603595f69d142e1c10bc8532e936",
+ "chksum_sha256": "10b22387a8147bd98ea199fa7e8866837cb3742dd173a2bb2f1c4bfefb326741",
"format": 1
},
{
- "name": "plugins/modules/snapshot.py",
+ "name": "tests/integration/targets/startup_script_info",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/startup_script_info/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "361a3cdac8de6b7ff2ba98859389d9d53e6a45b5f003bd069d9ea78a2759bcfc",
+ "chksum_sha256": "0e6908b2c939974fe0c6636ebb5d908284145edfb8ae78ebf2ca6b73d15a398a",
"format": 1
},
{
- "name": "plugins/modules/reserved_ip.py",
+ "name": "tests/integration/targets/startup_script_info/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/startup_script_info/tasks/tests.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a28bb0cafda10d630df72411835c4eb01c763888c9222bc81ffe37a46a281dfe",
+ "chksum_sha256": "5668e06fe3cf14e4ffdbf68decff145135365a9e4b7cd889096308ad4516565e",
"format": 1
},
{
- "name": "plugins/modules/ssh_key_info.py",
+ "name": "tests/integration/targets/startup_script_info/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5cedb298db9d7b8b3888eed9a734309a5ef0b0cae1052211cc0a571a9c2ada22",
+ "chksum_sha256": "d5738ca7eeca0a524a80197d73b1d677913903103d5bea0663c8fdc66eb6c09c",
"format": 1
},
{
- "name": "plugins/module_utils",
+ "name": "tests/integration/targets/startup_script_info/meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/module_utils/vultr_v2.py",
+ "name": "tests/integration/targets/startup_script_info/meta/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e49032c648151d4eeaaf522522afe8955a1ab734c8742cc82fe7111b4a7166b8",
+ "chksum_sha256": "fad8168157b59ea211367da3adec3c025885b88e940a43fbdd8c5b9a8f06a791",
"format": 1
},
{
- "name": "plugins/inventory",
+ "name": "tests/integration/targets/startup_script_info/defaults",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/inventory/vultr.py",
+ "name": "tests/integration/targets/startup_script_info/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3f27d32a30a548dffa6c2e327ba4db98db9c4ac40d6682a3af677e5dc810d882",
+ "chksum_sha256": "81ba8e5671cf9d77b15558eb21489b807a60b071c19dc5a16cbfd9ba6ccfe835",
"format": 1
},
{
- "name": "plugins/doc_fragments",
+ "name": "tests/integration/targets/common",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "plugins/doc_fragments/__init__.py",
+ "name": "tests/integration/targets/common/aliases",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "e084a3683ef795d1cdbf5e9b253f2ca1f783ae0d0d6e47e419acbbc4fc80bbfa",
"format": 1
},
{
- "name": "plugins/doc_fragments/vultr_v2.py",
+ "name": "tests/integration/targets/common/default",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/common/default/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "64f7eb39cbe633e26394afeb6d125d440046ec37f1cf82d4a4ea072092954afa",
+ "chksum_sha256": "11f87c1aa19551822d0b8585fcbb27151354e93cca5298e419581a349a23896d",
"format": 1
},
{
- "name": "changelogs",
+ "name": "tests/unit",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "changelogs/.gitignore",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "919ef00776e7d2ff349950ac4b806132aa9faf006e214d5285de54533e443b33",
+ "name": "tests/unit/plugins",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "changelogs/changelog.yaml",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "6feaa7b0a10c92895065283614f9f6a39d59fd2ca304389535252396233094d1",
+ "name": "tests/unit/plugins/inventory",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
"format": 1
},
{
- "name": "changelogs/fragments",
+ "name": "tests/unit/plugins/inventory/fixtures",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": "changelogs/fragments/.keep",
+ "name": "tests/unit/plugins/inventory/fixtures/vultr_inventory_page1.json",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "chksum_sha256": "004b664e8ddebb2714c97f7ef2c95be8d7b2e770089eb49b563fb321e4a79823",
"format": 1
},
{
- "name": "changelogs/config.yaml",
+ "name": "tests/unit/plugins/inventory/fixtures/empty_vultr_inventory.json",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0d1c790424791b634a9c7704aa0e9ec56e3ff34a602f269d68a356d87c777b3a",
+ "chksum_sha256": "64191612bc4b0099f55554c92444f8f71ac651b38875433e4a2a351ebb86fc1a",
"format": 1
},
{
- "name": ".github",
- "ftype": "dir",
- "chksum_type": null,
- "chksum_sha256": null,
+ "name": "tests/unit/plugins/inventory/fixtures/vultr_inventory_page2.json",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "b1151ecdeb91d94258df245931619c94dfdbee87308e8f126cef86932ea54436",
"format": 1
},
{
- "name": ".github/dependabot.yml",
+ "name": "tests/unit/plugins/inventory/fixtures/unauthorized_vultr_inventory.json",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d207e80d10726360f2046d4b2473a3cfd9f9eca99590281fa39d88f78e745145",
+ "chksum_sha256": "505876bcb387732db0065e9ff092c3060c8436dbe15e7ec98846899cf81603f4",
"format": 1
},
{
- "name": ".github/workflows",
+ "name": "tests/unit/plugins/inventory/fixtures/vultr_inventory.json",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "7966a533c5dbbe1df5eddac1ec56df52ec808b6a39303a51467dfcb74c329cc0",
+ "format": 1
+ },
+ {
+ "name": "tests/unit/plugins/inventory/test_vultr.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "a515f9f6c528aeb57f20b7975f2e0962967e48b6d8dcdb96cf43a4798d12ab7c",
+ "format": 1
+ },
+ {
+ "name": "meta",
"ftype": "dir",
"chksum_type": null,
"chksum_sha256": null,
"format": 1
},
{
- "name": ".github/workflows/integration.yml",
+ "name": "meta/runtime.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ba0c3bd03b358fd8cabaeb9fa2fe824530564df5c529de700fce29f607056102",
+ "chksum_sha256": "5e1e422bd1c479643c7cd120a6935927d999101c1bbcb3345d0ee3a8166c19d0",
"format": 1
},
{
- "name": ".github/workflows/unit.yml",
+ "name": ".ansible-lint",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7051532c9f19b38b2ac988bfd7c937d5cdf7daa6b93aa120161216505c1d0b62",
+ "chksum_sha256": "8e858e68d7c1937d65dfcad8b39b28b8d7e41aac65eff967772fba0c3a882a15",
"format": 1
},
{
- "name": ".github/workflows/publish.yml",
+ "name": "codecov.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9efbf024e8a8ce47dd5e91f825c0ce533a67fb9c8155851df4676184d6f4d06d",
+ "chksum_sha256": "0271dcfe609d71afb466112f2d1c4c13943580fa97bb42b2baa08a1c37bb1c14",
"format": 1
},
{
- "name": ".github/workflows/sanity.yml",
+ "name": "README.md",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "dc5cc7a6c0cea7cd93788a4db2cdfae337f39f98eca906cec9321b26209f9667",
+ "chksum_sha256": "93a4ac3fa1028eaa4e6e3695e3d6b8e1c5068fb507a3bddd20de12366c563b7e",
"format": 1
},
{
- "name": "COPYING",
+ "name": ".yamllint",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c61f12da7cdad526bdcbed47a4c0a603e60dbbfdaf8b66933cd088e9132c303f",
+ "chksum_sha256": "5845e18e9f23155f423207df9abac970aed687c638620bc2c9ee06706191054b",
"format": 1
}
],
diff --git a/ansible_collections/vultr/cloud/MANIFEST.json b/ansible_collections/vultr/cloud/MANIFEST.json
index 787b93878..d7fc23121 100644
--- a/ansible_collections/vultr/cloud/MANIFEST.json
+++ b/ansible_collections/vultr/cloud/MANIFEST.json
@@ -2,7 +2,7 @@
"collection_info": {
"namespace": "vultr",
"name": "cloud",
- "version": "1.8.0",
+ "version": "1.12.1",
"authors": [
"Ren\u00e9 Moser (@resmo)",
"Yanis Guenane (@Spredzy)",
@@ -26,7 +26,7 @@
"name": "FILES.json",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1abc635ad92d54847dd169705eaa4f000ddd045fe65318c39625c860a273c69b",
+ "chksum_sha256": "efeafb855683a649e3e0bbd0fea795ea3d8e0581d11b240365caaa92b0fc55cb",
"format": 1
},
"format": 1
diff --git a/ansible_collections/vultr/cloud/README.md b/ansible_collections/vultr/cloud/README.md
index 38880f9b6..0af5a70ad 100644
--- a/ansible_collections/vultr/cloud/README.md
+++ b/ansible_collections/vultr/cloud/README.md
@@ -7,7 +7,7 @@ This repository contains the `vultr.cloud` Ansible Collection . The collection w
---
**NOTE**
-`vultr.cloud` is the successor of exisitng `ngine_io.vultr` collection ([Ansible docs site](https://docs.ansible.com/ansible/latest/collections/ngine_io/vultr/)), which uses the deprecated Vultr v1 API.
+`vultr.cloud` is the successor of deprecated `ngine_io.vultr` collection which used the sunsetted Vultr v1 API.
---
@@ -23,7 +23,7 @@ Release notes are available in our [changelog](https://github.com/vultr/ansible-
This collection will be shipped with the Ansible package >=6.0.0. If you have it installed, no more action is required.
-If you have a minimal installation (only Ansible Core installed) or you want to use the latest version of the collection along with the whole Ansible package, you need to install the collection from [Ansible Galaxy](https://galaxy.ansible.com/vultr/cloud) manually with the `ansible-galaxy` command-line tool:
+If you have a minimal installation (only Ansible Core installed) or you want to use the latest version of the collection along with the whole Ansible package, you need to install the collection from [Ansible Galaxy](https://galaxy.ansible.com/ui/repo/published/vultr/cloud/) manually with the `ansible-galaxy` command-line tool:
ansible-galaxy collection install vultr.cloud
diff --git a/ansible_collections/vultr/cloud/changelogs/changelog.yaml b/ansible_collections/vultr/cloud/changelogs/changelog.yaml
index a24c768f9..01ecfe6a9 100644
--- a/ansible_collections/vultr/cloud/changelogs/changelog.yaml
+++ b/ansible_collections/vultr/cloud/changelogs/changelog.yaml
@@ -100,6 +100,63 @@ releases:
name: instance
namespace: ''
release_date: '2022-09-09'
+ 1.10.0:
+ changes:
+ minor_changes:
+ - inventory - Added VPC/VPC 2.0 support by adding ``internal_ip`` to the attributes
+ (https://github.com/vultr/ansible-collection-vultr/issues/86).
+ fragments:
+ - 86-inventory-internal_ip.yml
+ release_date: '2023-09-18'
+ 1.10.1:
+ changes:
+ bugfixes:
+ - instance - Fixed an issue detecting the instance state returned by the API
+ (https://github.com/vultr/ansible-collection-vultr/pull/89).
+ fragments:
+ - fix-instance-state-wait-for.yml
+ release_date: '2023-11-11'
+ 1.11.0:
+ changes:
+ bugfixes:
+ - reserved_ip - Fixed an issue which caused the module to fail, also enabled
+ integration tests (https://github.com/vultr/ansible-collection-vultr/issues/92).
+ minor_changes:
+ - Implemented a feature to distinguish resources by region if available. This
+ allows to have identical name per region e.g. a VPC named ``default`` in each
+ region. (https://github.com/vultr/ansible-collection-vultr/pull/98).
+ - instance - Added a new param ``user_scheme`` to change user scheme to non-root
+ on Linux while creating the instance (https://github.com/vultr/ansible-collection-vultr/issues/96).
+ fragments:
+ - distinguish-per-region.yml
+ - instance-user-scheme.yml
+ - reserved_ip-fix-broken-module.yml
+ release_date: '2023-12-05'
+ 1.12.0:
+ changes:
+ bugfixes:
+ - Fixed an issue with waiting for state (https://github.com/vultr/ansible-collection-vultr/pull/102).
+ minor_changes:
+ - Added retry on HTTP 504 returned by the API (https://github.com/vultr/ansible-collection-vultr/pull/104).
+ fragments:
+ - 102-state-detect.yml
+ - 104- retry-on-gateway-timeout.yml
+ modules:
+ - description: Manages object storages on Vultr
+ name: object_storage
+ namespace: ''
+ release_date: '2023-12-18'
+ 1.12.1:
+ changes:
+ bugfixes:
+ - Fixed an error while waiting for a specific state and the API returns an empty
+ response. (https://github.com/vultr/ansible-collection-vultr/issues/108).
+ - instance_info - Fixed the alias ``name`` being was used on the wrong argument.
+ (https://github.com/vultr/ansible-collection-vultr/issues/105).
+ fragments:
+ - fix-keyerror-wait-for-state.yml
+ - instance_info_fix-alias-for-label.yml
+ release_date: '2024-01-17'
1.2.0:
changes:
minor_changes:
@@ -196,3 +253,21 @@ releases:
- 63-inventory-bare-metal.yml
- instance-reinstall.yml
release_date: '2023-05-21'
+ 1.9.0:
+ changes:
+ bugfixes:
+ - firewall_rule - Fixed an idempotency issue if parameter ``port`` is set on
+ protocols other than TCP/UDP (https://github.com/vultr/ansible-collection-vultr/issues/76).
+ fragments:
+ - firewall_rule-fix-idempotency-icmp.yml
+ modules:
+ - description: Manages bare metal machines on Vultr.
+ name: bare_metal
+ namespace: ''
+ - description: Manages VPCs 2.0 on Vultr
+ name: vpc2
+ namespace: ''
+ - description: Gather information about the Vultr VPCs 2.0
+ name: vpc2_info
+ namespace: ''
+ release_date: '2023-08-22'
diff --git a/ansible_collections/vultr/cloud/meta/runtime.yml b/ansible_collections/vultr/cloud/meta/runtime.yml
index 7be048948..2d3570e84 100644
--- a/ansible_collections/vultr/cloud/meta/runtime.yml
+++ b/ansible_collections/vultr/cloud/meta/runtime.yml
@@ -3,6 +3,7 @@ requires_ansible: ">=2.11"
action_groups:
vultr:
- account_info
+ - bare_metal
- block_storage
- block_storage_info
- dns_domain
@@ -14,6 +15,7 @@ action_groups:
- firewall_rule_info
- instance
- instance_info
+ - object_storage
- os_info
- plan_info
- plan_metal_info
@@ -27,3 +29,5 @@ action_groups:
- user_info
- vpc
- vpc_info
+ - vpc2
+ - vpc2_info
diff --git a/ansible_collections/vultr/cloud/plugins/inventory/vultr.py b/ansible_collections/vultr/cloud/plugins/inventory/vultr.py
index c08446134..060813af5 100644
--- a/ansible_collections/vultr/cloud/plugins/inventory/vultr.py
+++ b/ansible_collections/vultr/cloud/plugins/inventory/vultr.py
@@ -66,6 +66,7 @@ options:
description:
- Instance attributes to add as host variables to each host added to inventory.
- See U(https://www.vultr.com/api/#operation/list-instances) for valid values.
+ - The I(internal_ip) attribute was added in version 1.10.0.
type: list
elements: str
default:
@@ -77,6 +78,7 @@ options:
- main_ip
- v6_main_ip
- tags
+ - internal_ip
filters:
description:
- Filter hosts with Jinja2 templates.
@@ -116,7 +118,7 @@ notes:
EXAMPLES = """
---
-# File endings vultr{,-{hosts,instances}}.y{,a}ml
+# File endings vultr{,_{hosts,instances}}.y{,a}ml
# All configuration done via environment variables:
plugin: vultr.cloud.vultr
@@ -147,6 +149,11 @@ plugin: vultr.cloud.vultr
compose:
ansible_host: vultr_v6_main_ip or vultr_main_ip
+# Use the internal IP
+plugin: vultr.cloud.vultr
+compose:
+ ansible_host: vultr_internal_ip
+
# Querying the bare metal instances
plugin: vultr.cloud.vultr
instance_type: bare_metal
@@ -160,7 +167,8 @@ from ansible.errors import AnsibleError, AnsibleParserError
from ansible.module_utils._text import to_native
from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
from ansible.module_utils.urls import Request
-from ansible.plugins.inventory import BaseInventoryPlugin, Cacheable, Constructable
+from ansible.plugins.inventory import (BaseInventoryPlugin, Cacheable,
+ Constructable)
from ..module_utils.vultr_v2 import VULTR_USER_AGENT
diff --git a/ansible_collections/vultr/cloud/plugins/module_utils/common_instance.py b/ansible_collections/vultr/cloud/plugins/module_utils/common_instance.py
new file mode 100644
index 000000000..8e6bcac56
--- /dev/null
+++ b/ansible_collections/vultr/cloud/plugins/module_utils/common_instance.py
@@ -0,0 +1,247 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright (c) 2023, René Moser <mail@renemoser.net>
+# 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
+
+import base64
+
+from .vultr_v2 import AnsibleVultr
+
+
+class AnsibleVultrCommonInstance(AnsibleVultr):
+ VPC_CONFIGS = {
+ "v1": {
+ "param": "vpcs",
+ "path": "/vpcs",
+ "suffix": "",
+ },
+ "v2": {
+ "param": "vpc2s",
+ "path": "/vpc2",
+ "suffix": "2",
+ },
+ }
+
+ def get_ssh_key_ids(self):
+ ssh_key_names = list(self.module.params["ssh_keys"])
+ ssh_keys = self.query_list(path="/ssh-keys", result_key="ssh_keys")
+
+ ssh_key_ids = list()
+ for ssh_key in ssh_keys:
+ if ssh_key["name"] in ssh_key_names:
+ ssh_key_ids.append(ssh_key["id"])
+ ssh_key_names.remove(ssh_key["name"])
+
+ if ssh_key_names:
+ self.module.fail_json(msg="SSH key names not found: %s" % ", ".join(ssh_key_names))
+
+ return ssh_key_ids
+
+ def get_resource_vpcs(self, resource, api_version="v1"):
+ path = "%s/%s" % (self.resource_path, resource["id"] + self.VPC_CONFIGS[api_version]["path"])
+ vpcs = self.query_list(path=path, result_key="vpcs")
+
+ # TODO: Workaround to get the description field into the list if missing
+ result = list()
+ for vpc in vpcs:
+ if "description" in vpc:
+ return vpcs
+
+ vpc_detail = self.query_by_id(resource_id=vpc["id"], path=self.VPC_CONFIGS[api_version]["path"], result_key="vpc")
+ vpc["description"] = vpc_detail["description"]
+ result.append(vpc)
+ return result
+
+ def get_vpc_ids(self, api_version="v1"):
+ vpc_names = list(self.module.params[self.VPC_CONFIGS[api_version]["param"]])
+ vpcs = self.query_list(self.VPC_CONFIGS[api_version]["path"], result_key="vpcs")
+
+ vpc_ids = list()
+ for vpc in vpcs:
+ if self.module.params["region"] != vpc["region"]:
+ continue
+
+ if vpc["description"] in vpc_names:
+ vpc_ids.append(vpc["id"])
+ vpc_names.remove(vpc["description"])
+
+ if vpc_names:
+ self.module.fail_json(msg="VPCs (%s) not found: %s" % (api_version, ", ".join(vpc_names)))
+
+ return vpc_ids
+
+ def get_firewall_group(self):
+ return self.query_filter_list_by_name(
+ key_name="description",
+ param_key="firewall_group",
+ path="/firewalls",
+ result_key="firewall_groups",
+ fail_not_found=True,
+ )
+
+ def get_snapshot(self):
+ return self.query_filter_list_by_name(
+ key_name="description",
+ param_key="snapshot",
+ path="/snapshots",
+ result_key="snapshots",
+ fail_not_found=True,
+ )
+
+ def get_startup_script(self):
+ return self.query_filter_list_by_name(
+ key_name="name",
+ param_key="startup_script",
+ path="/startup-scripts",
+ result_key="startup_scripts",
+ fail_not_found=True,
+ )
+
+ def get_os(self):
+ return self.query_filter_list_by_name(
+ key_name="name",
+ param_key="os",
+ path="/os",
+ result_key="os",
+ fail_not_found=True,
+ )
+
+ def get_app(self):
+ return self.query_filter_list_by_name(
+ key_name="deploy_name",
+ param_key="app",
+ path="/applications",
+ result_key="applications",
+ fail_not_found=True,
+ query_params={"type": "one-click"},
+ )
+
+ def get_image(self):
+ return self.query_filter_list_by_name(
+ key_name="deploy_name",
+ param_key="image",
+ path="/applications",
+ result_key="applications",
+ fail_not_found=True,
+ query_params={"type": "marketplace"},
+ )
+
+ def get_user_data(self, resource):
+ res = self.api_query(
+ path="%s/%s/%s" % (self.resource_path, resource[self.resource_key_id], "user-data"),
+ )
+ if res:
+ return str(res.get("user_data", dict()).get("data"))
+ return ""
+
+ def transform_resource(self, resource):
+ if not resource:
+ return resource
+
+ features = resource.get("features", list())
+ # Cloud instance features
+ if "backups" in self.module.params:
+ resource["backups"] = "enabled" if "auto_backups" in features else "disabled"
+ if "ddos_protection" in self.module.params:
+ resource["ddos_protection"] = "ddos_protection" in features
+
+ # Bare metal features
+ if "persistent_pxe" in self.module.params:
+ resource["persistent_pxe"] = "persistent_pxe" in features
+
+ # Common features
+ resource["enable_ipv6"] = "ipv6" in features
+
+ # VPCs
+ if "vpcs" in self.module.params:
+ resource["vpcs"] = self.get_resource_vpcs(resource=resource)
+ if "vpc2s" in self.module.params:
+ resource["vpc2s"] = self.get_resource_vpcs(resource=resource, api_version="v2")
+
+ return resource
+
+ def get_detach_vpcs_ids(self, resource, api_version="v1"):
+ detach_vpc_ids = []
+ for vpc in resource.get(self.VPC_CONFIGS[api_version]["param"], list()):
+ param = "attach_vpc%s" % self.VPC_CONFIGS[api_version]["suffix"]
+ if vpc["id"] not in list(self.module.params[param]):
+ detach_vpc_ids.append(vpc["id"])
+ return detach_vpc_ids
+
+ def configure(self):
+ if self.module.params["state"] != "absent":
+ if self.module.params.get("startup_script") is not None:
+ self.module.params["script_id"] = self.get_startup_script()["id"]
+
+ if self.module.params.get("snapshot") is not None:
+ self.module.params["snapshot_id"] = self.get_snapshot()["id"]
+
+ if self.module.params.get("os") is not None:
+ self.module.params["os_id"] = self.get_os()["id"]
+
+ if self.module.params.get("app") is not None:
+ self.module.params["app_id"] = self.get_app()["id"]
+
+ if self.module.params.get("image") is not None:
+ self.module.params["image_id"] = self.get_image()["image_id"]
+
+ if self.module.params.get("user_data") is not None:
+ self.module.params["user_data"] = base64.b64encode(self.module.params["user_data"].encode())
+
+ if self.module.params.get("ssh_keys") is not None:
+ # sshkey_id ist a list of ids
+ self.module.params["sshkey_id"] = self.get_ssh_key_ids()
+
+ if self.module.params.get("vpcs") is not None:
+ # attach_vpc is a list of ids used while creating
+ self.module.params["attach_vpc"] = self.get_vpc_ids()
+
+ if self.module.params.get("vpc2s") is not None:
+ # attach_vpc2 is a list of ids used while creating
+ self.module.params["attach_vpc2"] = self.get_vpc_ids(api_version="v2")
+
+ def create(self):
+ param_keys = ("os", "image", "app", "snapshot")
+ if not any(self.module.params.get(x) is not None for x in param_keys):
+ self.module.fail_json(msg="missing required arguements, one of the following required: %s" % ", ".join(param_keys))
+ return super(AnsibleVultrCommonInstance, self).create()
+
+ def update(self, resource):
+ user_data = self.get_user_data(resource=resource)
+ resource["user_data"] = user_data.encode()
+
+ # VPC1
+ if self.module.params.get("vpcs") is not None:
+ resource["attach_vpc"] = list()
+ for vpc in list(resource["vpcs"]):
+ resource["attach_vpc"].append(vpc["id"])
+
+ # detach_vpc is a list of ids to be detached
+ resource["detach_vpc"] = list()
+ self.module.params["detach_vpc"] = self.get_detach_vpcs_ids(resource=resource)
+
+ # VPC2
+ if self.module.params.get("vpc2s") is not None:
+ resource["attach_vpc2"] = list()
+ for vpc in list(resource["vpc2s"]):
+ resource["attach_vpc2"].append(vpc["id"])
+
+ # detach_vpc2 is a list of ids to be detached
+ resource["detach_vpc2"] = list()
+ self.module.params["detach_vpc2"] = self.get_detach_vpcs_ids(resource=resource, api_version="v2")
+
+ return super(AnsibleVultrCommonInstance, self).update(resource=resource)
+
+ def create_or_update(self):
+ resource = super(AnsibleVultrCommonInstance, self).create_or_update()
+ if resource:
+ resource = self.wait_for_state(resource=resource, key="status", states=["active"], retries=300)
+ return resource
+
+ def transform_result(self, resource):
+ if resource:
+ resource["user_data"] = self.get_user_data(resource=resource)
+ return resource
diff --git a/ansible_collections/vultr/cloud/plugins/module_utils/vultr_v2.py b/ansible_collections/vultr/cloud/plugins/module_utils/vultr_v2.py
index fb49d6180..602e89605 100644
--- a/ansible_collections/vultr/cloud/plugins/module_utils/vultr_v2.py
+++ b/ansible_collections/vultr/cloud/plugins/module_utils/vultr_v2.py
@@ -75,7 +75,6 @@ class AnsibleVultr:
resource_update_param_keys=None,
resource_update_method="PATCH",
):
-
self.module = module
self.namespace = namespace
@@ -165,7 +164,8 @@ class AnsibleVultr:
# Check for:
# 429 Too Many Requests
# 500 Internal Server Error
- if info["status"] not in (429, 500):
+ # 504 Gateway Time-out
+ if info["status"] not in (429, 500, 504):
break
# Vultr has a rate limiting requests per second, try to be polite
@@ -202,9 +202,23 @@ class AnsibleVultr:
found = dict()
for resource in self.query_list(path=path, result_key=result_key, query_params=query_params):
if resource.get(key_name) == param_value:
+ # In case the resource has a region, distinguish between the region
+ # This allows to have identical identifiers (e.g. names) per region
+ region_param = self.module.params.get("region")
+ region_resource = resource.get("region")
+ if region_resource and region_param and (region_param != region_resource):
+ continue
+
if found:
- self.module.fail_json(msg="More than one record with name=%s found. " "Use multiple=true if module supports it." % param_value)
+ if region_resource and not region_param:
+ msg = "More than one record with name=%s found. Use region to distinguish." % param_value
+ else:
+ msg = "More than one record with name=%s found. Use multiple=true if module supports it." % param_value
+
+ self.module.fail_json(msg=msg)
+
found = resource
+
if found:
if get_details:
return self.query_by_id(resource_id=found[key_id], skip_transform=skip_transform)
@@ -256,21 +270,24 @@ class AnsibleVultr:
resources = self.api_query(path=path, query_params=query_params)
return resources[result_key] if resources else []
- def wait_for_state(self, resource, key, states, cmp="="):
- for retry in range(0, 60):
- resource = self.query_by_id(resource_id=resource[self.resource_key_id], skip_transform=False)
- if cmp == "=":
- if key not in resource or resource[key] in states or not resource[key]:
- break
- else:
- if key not in resource or resource[key] not in states or not resource[key]:
- break
+ def wait_for_state(self, resource, key, states, cmp="=", retries=60):
+ resource_id = resource[self.resource_key_id]
+ for retry in range(0, retries):
+ resource = self.query_by_id(resource_id=resource_id, skip_transform=False)
+ if resource and key in resource:
+ if cmp == "=":
+ if resource[key] in states:
+ break
+ else:
+ if resource[key] not in states:
+ break
backoff(retry=retry)
else:
if cmp == "=":
- self.module.fail_json(msg="Wait for %s to become %s timed out" % (key, states))
+ msg = "Wait for %s to become one in %s timed out" % (key, states)
else:
- self.module.fail_json(msg="Wait for %s to not be in %s timed out" % (key, states))
+ msg = "Wait for %s to not be in %s timed out" % (key, states)
+ self.module.fail_json(msg=msg)
return resource
diff --git a/ansible_collections/vultr/cloud/plugins/modules/bare_metal.py b/ansible_collections/vultr/cloud/plugins/modules/bare_metal.py
new file mode 100644
index 000000000..d2ffe09ef
--- /dev/null
+++ b/ansible_collections/vultr/cloud/plugins/modules/bare_metal.py
@@ -0,0 +1,440 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Copyright (c) 2023, René Moser <mail@renemoser.net>
+# 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
+
+DOCUMENTATION = """
+---
+module: bare_metal
+short_description: Manages bare metal machines on Vultr.
+description:
+ - Manage bare metal machines on Vultr.
+version_added: "1.9.0"
+author:
+ - "René Moser (@resmo)"
+options:
+ label:
+ description:
+ - Name of the bare metal machine.
+ required: true
+ aliases: [ name ]
+ type: str
+ hostname:
+ description:
+ - The hostname to assign to this bare metal machine.
+ type: str
+ os:
+ description:
+ - The operating system name.
+ - Mutually exclusive with I(image) and I(app).
+ type: str
+ app:
+ description:
+ - The app deploy name of Vultr OneClick apps.
+ - Mutually exclusive with I(image) and I(os).
+ type: str
+ image:
+ description:
+ - The image deploy name of Vultr Marketplace apps.
+ - Mutually exclusive with I(os) and I(app).
+ type: str
+ plan:
+ description:
+ - The plan name to use for the bare metal machine.
+ - Required if the bare metal machine does not yet exist.
+ type: str
+ activation_email:
+ description:
+ - Whether to send an activation email when the bare metal machine is ready or not.
+ - Only considered on creation.
+ type: bool
+ default: false
+ persistent_pxe:
+ description:
+ - Whether to enable persistent PXE or not.
+ type: bool
+ enable_ipv6:
+ description:
+ - Whether to enable IPv6 or not.
+ type: bool
+ tags:
+ description:
+ - Tags for the bare metal machine.
+ type: list
+ elements: str
+ user_data:
+ description:
+ - User data to be passed to the bare metal machine.
+ type: str
+ startup_script:
+ description:
+ - Name or ID of the startup script to execute on boot.
+ - Only considered while creating the bare metal machine.
+ type: str
+ ssh_keys:
+ description:
+ - List of SSH key names passed to the bare metal machine on creation.
+ type: list
+ elements: str
+ snapshot:
+ description:
+ - Description or ID of the snapshot.
+ - Only considered while creating the bare metal machine.
+ type: str
+ reserved_ipv4:
+ description:
+ - IP address of the floating IP to use as the main IP of this bare metal machine.
+ - Only considered on creation.
+ type: str
+ region:
+ description:
+ - Region the bare metal machine is deployed into.
+ type: str
+ required: true
+ vpc2s:
+ description:
+ - A list of VPCs (VPC 2.0) identified by their description to be assigned to the bare metal machine.
+ type: list
+ elements: str
+ state:
+ description:
+ - State of the bare metal machine.
+ default: present
+ choices: [ present, absent ]
+ type: str
+extends_documentation_fragment:
+ - vultr.cloud.vultr_v2
+"""
+
+EXAMPLES = """
+---
+- name: Create an bare metal machine using OS
+ vultr.cloud.bare_metal:
+ label: my web server
+ hostname: my-hostname
+ user_data: |
+ #cloud-config
+ packages:
+ - nginx
+ plan: vbm-4c-32gb
+ enable_ipv6: true
+ ssh_keys:
+ - my ssh key
+ vpc2s:
+ - my vpc description
+ tags:
+ - web
+ - project-genesis
+ region: ams
+ os: Debian 12 x64 (bookworm)
+
+- name: Deploy an bare metal machine of a marketplace app
+ vultr.cloud.bare_metal:
+ label: git-server
+ hostname: git
+ plan: vbm-4c-32gb
+ enable_ipv6: true
+ region: ams
+ image: Gitea on Ubuntu 20.04
+
+- name: Delete an bare metal machine
+ vultr.cloud.bare_metal:
+ label: my web server
+ region: ams
+ state: absent
+"""
+
+RETURN = """
+---
+vultr_api:
+ description: Response from Vultr API with a few additions/modification.
+ returned: success
+ type: dict
+ contains:
+ api_timeout:
+ description: Timeout used for the API requests.
+ returned: success
+ type: int
+ sample: 60
+ api_retries:
+ description: Amount of max retries for the API requests.
+ returned: success
+ type: int
+ sample: 5
+ api_retry_max_delay:
+ description: Exponential backoff delay in seconds between retries up to this max delay value.
+ returned: success
+ type: int
+ sample: 12
+ api_endpoint:
+ description: Endpoint used for the API requests.
+ returned: success
+ type: str
+ sample: "https://api.vultr.com/v2"
+vultr_bare_metal:
+ description: Response from Vultr API.
+ returned: success
+ type: dict
+ contains:
+ id:
+ description: ID of the bare metal machine.
+ returned: success
+ type: str
+ sample: cb676a46-66fd-4dfb-b839-443f2e6c0b60
+ v6_main_ip:
+ description: IPv6 of the bare metal machine.
+ returned: success
+ type: str
+ sample: ""
+ v6_network:
+ description: IPv6 network of the bare metal machine.
+ returned: success
+ type: str
+ sample: ""
+ v6_network_size:
+ description: IPv6 network size of the bare metal machine.
+ returned: success
+ type: int
+ sample: 0
+ mac_address:
+ description: MAC address of the bare metal machine.
+ returned: success
+ type: int
+ sample: 2199756823533
+ main_ip:
+ description: IPv4 of the bare metal machine.
+ returned: success
+ type: str
+ sample: 95.179.189.95
+ netmask_v4:
+ description: Netmask IPv4 of the bare metal machine.
+ returned: success
+ type: str
+ sample: 255.255.254.0
+ gateway_v4:
+ description: Gateway IPv4.
+ returned: success
+ type: str
+ sample: 95.179.188.1
+ disk:
+ description: Disk info of the bare metal machine.
+ returned: success
+ type: str
+ sample: "2x 240GB SSD"
+ cpu_count:
+ description: CPU count of the bare metal machine.
+ returned: success
+ type: int
+ sample: 1
+ plan:
+ description: Plan of the bare metal machine.
+ returned: success
+ type: str
+ sample: vbm-4c-32gb
+ image_id:
+ description: Image ID of the bare metal machine.
+ returned: success
+ type: str
+ sample: ""
+ os_id:
+ description: OS ID of the bare metal machine.
+ returned: success
+ type: int
+ sample: 186
+ app_id:
+ description: App ID of the bare metal machine.
+ returned: success
+ type: int
+ sample: 37
+ date_created:
+ description: Date when the bare metal machine was created.
+ returned: success
+ type: str
+ sample: "2020-10-10T01:56:20+00:00"
+ label:
+ description: Label of the bare metal machine.
+ returned: success
+ type: str
+ sample: my bare metal machine
+ region:
+ description: Region the bare metal machine was deployed into.
+ returned: success
+ type: str
+ sample: ews
+ status:
+ description: Status about the deployment of the bare metal machine.
+ returned: success
+ type: str
+ sample: active
+ default_password:
+ description: The default password assigned at deployment. Only available for ten minutes after deployment.
+ returned: success
+ type: str
+ sample: "examplePassword"
+ power_status:
+ description: Power status of the bare metal machine.
+ returned: success
+ type: str
+ sample: running
+ ram:
+ description: RAM info of the bare metal machine.
+ returned: success
+ type: str
+ sample: "32768 MB"
+ os:
+ description: OS of the bare metal machine.
+ returned: success
+ type: str
+ sample: Application
+ tags:
+ description: Tags of the bare metal machine.
+ returned: success
+ type: list
+ sample: [ my-tag ]
+ features:
+ description: Features of the bare metal machine.
+ returned: success
+ type: list
+ sample: [ ddos_protection, ipv6, auto_backups ]
+ user_data:
+ description: Base64 encoded user data (cloud init) of the bare metal machine.
+ returned: success
+ type: str
+ sample: I2Nsb3VkLWNvbmZpZwpwYWNrYWdlczoKICAtIGh0b3AK
+ enable_ipv6:
+ description: Whether IPv6 is enabled or not.
+ returned: success
+ type: bool
+ sample: true
+ vpc2s:
+ description: List of VPCs (VPC 2.0) attached.
+ returned: success
+ type: list
+ contains:
+ id:
+ description: ID of the VPC.
+ returned: success
+ type: str
+ sample: 5536d2a4-66fd-4dfb-b839-7672fd5bc116
+ description:
+ description: Description of the VPC.
+ returned: success
+ type: str
+ sample: my vpc
+ region:
+ description: Region the VPC is assigned to.
+ returned: success
+ type: str
+ sample: ews
+ date_created:
+ description: Date when the VPC was created.
+ returned: success
+ type: str
+ sample: "2020-10-10T01:56:20+00:00"
+ ip_block:
+ description: IP block assigned to the VPC.
+ returned: success
+ type: str
+ sample: "10.99.0.0"
+ prefix_length:
+ description: The number of bits for the netmask in CIDR notation.
+ returned: success
+ type: int
+ sample: 24
+"""
+
+
+from ansible.module_utils.basic import AnsibleModule
+
+from ..module_utils.common_instance import AnsibleVultrCommonInstance
+from ..module_utils.vultr_v2 import vultr_argument_spec
+
+
+def main():
+ argument_spec = vultr_argument_spec()
+ argument_spec.update(
+ dict(
+ label=dict(type="str", required=True, aliases=["name"]),
+ hostname=dict(type="str"),
+ app=dict(type="str"),
+ image=dict(type="str"),
+ snapshot=dict(type="str"),
+ os=dict(type="str"),
+ plan=dict(type="str"),
+ activation_email=dict(type="bool", default=False),
+ enable_ipv6=dict(type="bool"),
+ persistent_pxe=dict(type="bool"),
+ tags=dict(type="list", elements="str"),
+ vpc2s=dict(type="list", elements="str"),
+ reserved_ipv4=dict(type="str"),
+ startup_script=dict(type="str"),
+ user_data=dict(type="str"),
+ ssh_keys=dict(type="list", elements="str", no_log=False),
+ region=dict(type="str", required=True),
+ state=dict(
+ choices=[
+ "present",
+ "absent",
+ ],
+ default="present",
+ ),
+ ) # type: ignore
+ )
+
+ module = AnsibleModule(
+ argument_spec=argument_spec,
+ required_if=(("state", "present", ("plan",)),),
+ mutually_exclusive=(("os", "app", "image", "snapshot"),),
+ supports_check_mode=True,
+ )
+
+ vultr = AnsibleVultrCommonInstance(
+ module=module,
+ namespace="vultr_bare_metal",
+ resource_path="/bare-metals",
+ ressource_result_key_singular="bare_metal",
+ resource_create_param_keys=[
+ "label",
+ "hostname",
+ "plan",
+ "app_id",
+ "os_id",
+ "iso_id",
+ "image_id",
+ "snapshot_id",
+ "script_id",
+ "region",
+ "enable_ipv6",
+ "reserved_ipv4",
+ "user_data",
+ "tags",
+ "activation_email",
+ "sshkey_id",
+ "persistent_pxe",
+ "attach_vpc2",
+ ],
+ resource_update_param_keys=[
+ "plan",
+ "tags",
+ "enable_ipv6",
+ "user_data",
+ "attach_vpc2",
+ "detach_vpc2",
+ ],
+ resource_key_name="label",
+ )
+
+ state = module.params.get("state") # type: ignore
+ if state == "absent":
+ vultr.absent()
+ else:
+ vultr.present()
+
+
+if __name__ == "__main__":
+ main()
diff --git a/ansible_collections/vultr/cloud/plugins/modules/firewall_rule.py b/ansible_collections/vultr/cloud/plugins/modules/firewall_rule.py
index 474372d08..67dd85f4d 100644
--- a/ansible_collections/vultr/cloud/plugins/modules/firewall_rule.py
+++ b/ansible_collections/vultr/cloud/plugins/modules/firewall_rule.py
@@ -212,6 +212,21 @@ class AnsibleVultrFirewallRule(AnsibleVultr):
if source is not None and source != "cloudflare":
self.module.params["source"] = self.get_load_balancer()["id"]
+ # Warn about port only affects TCP and UDP protocol
+ if (
+ self.module.params.get("protocol")
+ not in (
+ "tcp",
+ "udp",
+ )
+ and self.module.params.get("port") is not None
+ ):
+ self.module.warn(
+ "Setting a port (%s) only affects protocols TCP/UDP, but protocol is: %s. Ignoring."
+ % (self.module.params.get("port"), self.module.params.get("protocol"))
+ )
+ self.module.params["port"] = None
+
def query(self):
result = dict()
for resource in self.query_list():
diff --git a/ansible_collections/vultr/cloud/plugins/modules/instance.py b/ansible_collections/vultr/cloud/plugins/modules/instance.py
index 73099164d..7eca359b4 100644
--- a/ansible_collections/vultr/cloud/plugins/modules/instance.py
+++ b/ansible_collections/vultr/cloud/plugins/modules/instance.py
@@ -80,6 +80,14 @@ options:
description:
- User data to be passed to the instance.
type: str
+ user_scheme:
+ description:
+ - The user scheme used as login user (Linux-only).
+ - By default, the I(root) user is configured.
+ - Only considered while creating the instance.
+ type: str
+ choices: [ root, limited ]
+ version_added: "1.11.0"
startup_script:
description:
- Name or ID of the startup script to execute on boot.
@@ -146,7 +154,7 @@ EXAMPLES = """
- web
- project-genesis
region: ams
- os: Debian 11 x64 (bullseye)
+ os: Debian 12 x64 (bookworm)
- name: Deploy an instance of a marketplace app
vultr.cloud.instance:
@@ -362,6 +370,12 @@ vultr_instance:
returned: success
type: str
sample: I2Nsb3VkLWNvbmZpZwpwYWNrYWdlczoKICAtIGh0b3AK
+ user_scheme:
+ description: The user scheme to login into this instance
+ returned: success
+ type: str
+ sample: root
+ version_added: "1.11.0"
backups:
description: Whether backups are enabled or disabled.
returned: success
@@ -408,173 +422,14 @@ vultr_instance:
sample: "5a:01:04:3d:5e:72"
"""
-import base64
from ansible.module_utils.basic import AnsibleModule
-from ..module_utils.vultr_v2 import AnsibleVultr, vultr_argument_spec
-
-
-class AnsibleVultrInstance(AnsibleVultr):
- def get_ssh_key_ids(self):
- ssh_key_names = list(self.module.params["ssh_keys"])
- ssh_keys = self.query_list(path="/ssh-keys", result_key="ssh_keys")
-
- ssh_key_ids = list()
- for ssh_key in ssh_keys:
- if ssh_key["name"] in ssh_key_names:
- ssh_key_ids.append(ssh_key["id"])
- ssh_key_names.remove(ssh_key["name"])
-
- if ssh_key_names:
- self.module.fail_json(msg="SSH key names not found: %s" % ", ".join(ssh_key_names))
-
- return ssh_key_ids
-
- def get_vpc_ids(self):
- vpc_names = list(self.module.params["vpcs"])
- vpcs = self.query_list(path="/vpcs", result_key="vpcs")
-
- vpc_ids = list()
- for vpc in vpcs:
- if vpc["description"] in vpc_names:
- vpc_ids.append(vpc["id"])
- vpc_names.remove(vpc["description"])
-
- if vpc_names:
- self.module.fail_json(msg="VPCs not found: %s" % ", ".join(vpc_names))
-
- return vpc_ids
-
- def get_instance_vpcs(self, resource):
- path = "/instances/%s/vpcs" % resource["id"]
- vpcs = self.query_list(path=path, result_key="vpcs")
-
- # Workaround to get the description field into the list
- result = list()
- for vpc in vpcs:
- vpc_detail = self.query_by_id(resource_id=vpc["id"], path="/vpcs", result_key="vpc")
- vpc["description"] = vpc_detail["description"]
- result.append(vpc)
- return result
-
- def get_firewall_group(self):
- return self.query_filter_list_by_name(
- key_name="description",
- param_key="firewall_group",
- path="/firewalls",
- result_key="firewall_groups",
- fail_not_found=True,
- )
-
- def get_snapshot(self):
- return self.query_filter_list_by_name(
- key_name="description",
- param_key="snapshot",
- path="/snapshots",
- result_key="snapshots",
- fail_not_found=True,
- )
-
- def get_startup_script(self):
- return self.query_filter_list_by_name(
- key_name="name",
- param_key="startup_script",
- path="/startup-scripts",
- result_key="startup_scripts",
- fail_not_found=True,
- )
-
- def get_os(self):
- return self.query_filter_list_by_name(
- key_name="name",
- param_key="os",
- path="/os",
- result_key="os",
- fail_not_found=True,
- )
-
- def get_app(self):
- return self.query_filter_list_by_name(
- key_name="deploy_name",
- param_key="app",
- path="/applications",
- result_key="applications",
- fail_not_found=True,
- query_params={"type": "one-click"},
- )
-
- def get_image(self):
- return self.query_filter_list_by_name(
- key_name="deploy_name",
- param_key="image",
- path="/applications",
- result_key="applications",
- fail_not_found=True,
- query_params={"type": "marketplace"},
- )
-
- def get_user_data(self, resource):
- res = self.api_query(
- path="%s/%s/%s" % (self.resource_path, resource[self.resource_key_id], "user-data"),
- )
- if res:
- return str(res.get("user_data", dict()).get("data"))
- return ""
-
- def transform_resource(self, resource):
- if not resource:
- return resource
-
- features = resource.get("features", list())
- resource["backups"] = "enabled" if "auto_backups" in features else "disabled"
- resource["enable_ipv6"] = "ipv6" in features
- resource["ddos_protection"] = "ddos_protection" in features
- resource["vpcs"] = self.get_instance_vpcs(resource=resource)
-
- return resource
-
- def get_detach_vpcs_ids(self, resource):
- detach_vpc_ids = []
- for vpc in resource.get("vpcs", list()):
- if vpc["id"] not in list(self.module.params["attach_vpc"]):
- detach_vpc_ids.append(vpc["id"])
- return detach_vpc_ids
-
- def configure(self):
- if self.module.params["state"] != "absent":
- if self.module.params["startup_script"] is not None:
- self.module.params["script_id"] = self.get_startup_script()["id"]
-
- if self.module.params["snapshot"] is not None:
- self.module.params["snapshot_id"] = self.get_snapshot()["id"]
-
- if self.module.params["firewall_group"] is not None:
- self.module.params["firewall_group_id"] = self.get_firewall_group()["id"]
-
- if self.module.params["os"] is not None:
- self.module.params["os_id"] = self.get_os()["id"]
-
- if self.module.params["app"] is not None:
- self.module.params["app_id"] = self.get_app()["id"]
-
- if self.module.params["image"] is not None:
- self.module.params["image_id"] = self.get_image()["image_id"]
-
- if self.module.params["user_data"] is not None:
- self.module.params["user_data"] = base64.b64encode(self.module.params["user_data"].encode())
-
- if self.module.params["ssh_keys"] is not None:
- # sshkey_id ist a list of ids
- self.module.params["sshkey_id"] = self.get_ssh_key_ids()
-
- if self.module.params["backups"] is not None:
- self.module.params["backups"] = "enabled" if self.module.params["backups"] else "disabled"
+from ..module_utils.common_instance import AnsibleVultrCommonInstance
+from ..module_utils.vultr_v2 import vultr_argument_spec
- if self.module.params["vpcs"] is not None:
- # attach_vpc is a list of ids used while creating
- self.module.params["attach_vpc"] = self.get_vpc_ids()
+class AnsibleVultrInstance(AnsibleVultrCommonInstance):
def handle_power_status(self, resource, state, action, power_status, force=False, wait_for_state=True):
if state == self.module.params["state"] and (resource["power_status"] != power_status or force):
self.result["changed"] = True
@@ -588,31 +443,9 @@ class AnsibleVultrInstance(AnsibleVultr):
resource = self.wait_for_state(resource=resource, key="power_status", states=[power_status])
return resource
- def create(self):
- param_keys = ("os", "image", "app", "snapshot")
- if not any(self.module.params.get(x) is not None for x in param_keys):
- self.module.fail_json(msg="missing required arguements, one of the following required: %s" % ", ".join(param_keys))
- return super(AnsibleVultrInstance, self).create()
-
- def update(self, resource):
- user_data = self.get_user_data(resource=resource)
- resource["user_data"] = user_data.encode()
-
- if self.module.params["vpcs"] is not None:
- resource["attach_vpc"] = list()
- for vpc in list(resource["vpcs"]):
- resource["attach_vpc"].append(vpc["id"])
-
- # detach_vpc is a list of ids to be detached
- resource["detach_vpc"] = list()
- self.module.params["detach_vpc"] = self.get_detach_vpcs_ids(resource=resource)
-
- return super(AnsibleVultrInstance, self).update(resource=resource)
-
def create_or_update(self):
resource = super(AnsibleVultrInstance, self).create_or_update()
if resource:
- resource = self.wait_for_state(resource=resource, key="status", states=["active"])
resource = self.wait_for_state(resource=resource, key="server_status", states=["none", "locked"], cmp="!=")
# Hanlde power status
@@ -630,10 +463,15 @@ class AnsibleVultrInstance(AnsibleVultr):
return resource
- def transform_result(self, resource):
- if resource:
- resource["user_data"] = self.get_user_data(resource=resource)
- return resource
+ def configure(self):
+ super(AnsibleVultrInstance, self).configure()
+
+ if self.module.params["state"] != "absent":
+ if self.module.params.get("firewall_group") is not None:
+ self.module.params["firewall_group_id"] = self.get_firewall_group()["id"]
+
+ if self.module.params.get("backups") is not None:
+ self.module.params["backups"] = "enabled" if self.module.params["backups"] else "disabled"
def absent(self):
resource = self.query()
@@ -666,6 +504,7 @@ def main():
user_data=dict(type="str"),
ssh_keys=dict(type="list", elements="str", no_log=False),
region=dict(type="str", required=True),
+ user_scheme=dict(type="str", choices=["root", "limited"]),
state=dict(
choices=[
"present",
@@ -713,6 +552,7 @@ def main():
"sshkey_id",
"backups",
"attach_vpc",
+ "user_scheme",
],
resource_update_param_keys=[
"plan",
diff --git a/ansible_collections/vultr/cloud/plugins/modules/instance_info.py b/ansible_collections/vultr/cloud/plugins/modules/instance_info.py
index 2a5c311bb..d473eae20 100644
--- a/ansible_collections/vultr/cloud/plugins/modules/instance_info.py
+++ b/ansible_collections/vultr/cloud/plugins/modules/instance_info.py
@@ -239,8 +239,8 @@ def main():
argument_spec = vultr_argument_spec()
argument_spec.update(
dict(
- region=dict(type="str", aliases=["name"]),
- label=dict(type="str"),
+ region=dict(type="str"),
+ label=dict(type="str", aliases=["name"]),
) # type: ignore
)
diff --git a/ansible_collections/vultr/cloud/plugins/modules/object_storage.py b/ansible_collections/vultr/cloud/plugins/modules/object_storage.py
new file mode 100644
index 000000000..32ad4f70a
--- /dev/null
+++ b/ansible_collections/vultr/cloud/plugins/modules/object_storage.py
@@ -0,0 +1,197 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Copyright (c) 2024, René Moser <mail@renemoser.net>
+# 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
+
+
+DOCUMENTATION = """
+---
+module: object_storage
+short_description: Manages object storages on Vultr
+description:
+ - Manage object storages.
+version_added: "1.12.0"
+author:
+ - "René Moser (@resmo)"
+options:
+ label:
+ description:
+ - Name of the object storage.
+ required: true
+ aliases: [ name ]
+ type: str
+ cluster:
+ description:
+ - Cluster hostname where the object storage will be created.
+ required: true
+ type: str
+ state:
+ description:
+ - State of the object storage.
+ default: present
+ choices: [ present, absent]
+ type: str
+extends_documentation_fragment:
+ - vultr.cloud.vultr_v2
+"""
+
+EXAMPLES = """
+---
+- name: Ensure an object storage is present
+ vultr.cloud.object_storage:
+ label: my object storage
+ cluster: ewr1.vultrobjects.com
+
+- name: Ensure an object storage is absent
+ vultr.cloud.object_storage:
+ label: my object storage
+ cluster: ewr1.vultrobjects.com
+ state: absent
+"""
+
+RETURN = """
+---
+vultr_api:
+ description: Response from Vultr API with a few additions/modification.
+ returned: success
+ type: dict
+ contains:
+ api_account:
+ description: Account used in the ini file to select the key.
+ returned: success
+ type: str
+ sample: default
+ api_timeout:
+ description: Timeout used for the API requests.
+ returned: success
+ type: int
+ sample: 60
+ api_retries:
+ description: Amount of max retries for the API requests.
+ returned: success
+ type: int
+ sample: 5
+ api_retry_max_delay:
+ description: Exponential backoff delay in seconds between retries up to this max delay value.
+ returned: success
+ type: int
+ sample: 12
+ api_endpoint:
+ description: Endpoint used for the API requests.
+ returned: success
+ type: str
+ sample: "https://api.vultr.com/v2"
+vultr_block_storage:
+ description: Response from Vultr API.
+ returned: success
+ type: dict
+ contains:
+ date_created:
+ description: Date the object storage was created.
+ returned: success
+ type: str
+ sample: "2020-10-10T01:56:20+00:00"
+ id:
+ description: A unique ID for the object storage.
+ returned: success
+ type: str
+ sample: cb676a46-66fd-4dfb-b839-443f2e6c0b60
+ label:
+ description: The user-supplied label for this object storage.
+ returned: success
+ type: str
+ sample: my object storage
+ region:
+ description: The region for this object storage.
+ returned: success
+ type: str
+ sample: ews
+ status:
+ description: The status of this object storage.
+ returned: success
+ type: str
+ sample: active
+ s3_hostname:
+ description: The Cluster hostname for this object storage.
+ returned: success
+ type: str
+ sample: ewr1.vultrobjects.com
+ s3_access_key:
+ description: The object storage access key.
+ returned: success
+ type: str
+ sample: 00example11223344
+ s3_secret_key:
+ description: The object storage secret key.
+ returned: success
+ type: str
+ sample: 00example1122334455667788990011
+"""
+
+from ansible.module_utils.basic import AnsibleModule
+
+from ..module_utils.vultr_v2 import AnsibleVultr, vultr_argument_spec
+
+
+class AnsibleVultrObjectStorage(AnsibleVultr):
+ def configure(self):
+ super(AnsibleVultrObjectStorage, self).configure()
+ cluster = self.get_cluster()
+ self.module.params["cluster_id"] = cluster["id"]
+ # Use region to distinguish labels between regions
+ self.module.params["region"] = cluster["region"]
+
+ def get_cluster(self):
+ return self.query_filter_list_by_name(
+ key_name="hostname",
+ param_key="cluster",
+ path="/object-storage/clusters",
+ result_key="clusters",
+ fail_not_found=True,
+ )
+
+ def create_or_update(self):
+ resource = super(AnsibleVultrObjectStorage, self).create_or_update()
+ if resource:
+ resource = self.wait_for_state(resource=resource, key="status", states=["active"])
+ return resource
+
+
+def main():
+ argument_spec = vultr_argument_spec()
+ argument_spec.update(
+ dict(
+ label=dict(type="str", required=True, aliases=["name"]),
+ cluster=dict(type="str", required=True),
+ state=dict(type="str", choices=["present", "absent"], default="present"),
+ ) # type: ignore
+ )
+
+ module = AnsibleModule(
+ argument_spec=argument_spec,
+ supports_check_mode=True,
+ )
+
+ vultr = AnsibleVultrObjectStorage(
+ module=module,
+ namespace="vultr_object_storage",
+ resource_path="/object-storage",
+ ressource_result_key_singular="object_storage",
+ resource_create_param_keys=["label", "cluster_id"],
+ resource_update_param_keys=["label"],
+ resource_key_name="label",
+ )
+
+ if module.params.get("state") == "absent": # type: ignore
+ vultr.absent()
+ else:
+ vultr.present()
+
+
+if __name__ == "__main__":
+ main()
diff --git a/ansible_collections/vultr/cloud/plugins/modules/reserved_ip.py b/ansible_collections/vultr/cloud/plugins/modules/reserved_ip.py
index 9bc2e254b..4bf1c66ae 100644
--- a/ansible_collections/vultr/cloud/plugins/modules/reserved_ip.py
+++ b/ansible_collections/vultr/cloud/plugins/modules/reserved_ip.py
@@ -166,7 +166,6 @@ class AnsibleVultrReservedIp(AnsibleVultr):
instance_name = self.module.params["instance_name"]
if instance_name is not None:
-
# Empty string ID means detach instance
if len(instance_name) == 0:
return ""
@@ -187,7 +186,7 @@ class AnsibleVultrReservedIp(AnsibleVultr):
return resources["instances"][0]["id"]
- def query_list(self, path=None, result_key=None):
+ def query_list(self, path=None, result_key=None, query_params=None):
resources = self.api_query(path=self.resource_path) or dict()
resources_filtered = list()
diff --git a/ansible_collections/vultr/cloud/plugins/modules/vpc2.py b/ansible_collections/vultr/cloud/plugins/modules/vpc2.py
new file mode 100644
index 000000000..c2caa1784
--- /dev/null
+++ b/ansible_collections/vultr/cloud/plugins/modules/vpc2.py
@@ -0,0 +1,191 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Copyright (c) 2023, René Moser <mail@renemoser.net>
+# 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
+
+
+DOCUMENTATION = """
+---
+module: vpc2
+short_description: Manages VPCs 2.0 on Vultr
+description:
+ - Create and remove VPCs 2.0.
+version_added: "1.9.0"
+author: "René Moser (@resmo)"
+options:
+ description:
+ description:
+ - Description of the VPC.
+ required: true
+ aliases: [ name ]
+ type: str
+ ip_type:
+ description:
+ - Type of the IP version.
+ - Required if I(state=present).
+ default: v4
+ choices: [ v4 ]
+ type: str
+ ip_block:
+ description:
+ - The subnet of the VPC.
+ - Required if I(state=present).
+ type: str
+ prefix_length:
+ description:
+ - The number of bits for the netmask in CIDR notation, e.g. 24.
+ - Required if I(state=present).
+ type: int
+ region:
+ description:
+ - Region the VPC will be related to.
+ - Required if I(state=present).
+ type: str
+ state:
+ description:
+ - State of the VPC.
+ default: present
+ choices: [ present, absent ]
+ type: str
+extends_documentation_fragment:
+ - vultr.cloud.vultr_v2
+"""
+
+EXAMPLES = """
+- name: Ensure a VPC is present
+ vultr.cloud.vpc2:
+ description: my VPC.
+ ip_block: 10.99.1.0
+ prefix_length: 24
+ region: ewr
+
+- name: Ensure a VPC is absent
+ vultr.cloud.vpc2:
+ description: my VPC.
+ state: absent
+"""
+
+RETURN = """
+---
+vultr_api:
+ description: Response from Vultr API with a few additions/modification.
+ returned: success
+ type: dict
+ contains:
+ api_timeout:
+ description: Timeout used for the API requests.
+ returned: success
+ type: int
+ sample: 60
+ api_retries:
+ description: Amount of max retries for the API requests.
+ returned: success
+ type: int
+ sample: 5
+ api_retry_max_delay:
+ description: Exponential backoff delay in seconds between retries up to this max delay value.
+ returned: success
+ type: int
+ sample: 12
+ api_endpoint:
+ description: Endpoint used for the API requests.
+ returned: success
+ type: str
+ sample: "https://api.vultr.com/v2"
+vultr_vpc2:
+ description: Response from Vultr API.
+ returned: success
+ type: dict
+ contains:
+ id:
+ description: ID of the VPC.
+ returned: success
+ type: str
+ sample: cb676a46-66fd-4dfb-b839-443f2e6c0b60
+ description:
+ description: Description of the VPC.
+ returned: success
+ type: str
+ sample: my vpc
+ ip_block:
+ description: Subnet of the VPC.
+ returned: success
+ type: str
+ sample: 10.99.1.0
+ prefix_length:
+ description: The number of bits for the netmask in CIDR notation.
+ returned: success
+ type: int
+ sample: 24
+ date_created:
+ description: Date the VPC was created.
+ returned: success
+ type: str
+ sample: "2023-08-20T19:39:20+00:00"
+ region:
+ description: The region the VPC is located in.
+ returned: success
+ type: str
+ sample: ewr
+"""
+
+from ansible.module_utils.basic import AnsibleModule
+
+from ..module_utils.vultr_v2 import AnsibleVultr, vultr_argument_spec
+
+
+def main():
+ argument_spec = vultr_argument_spec()
+ argument_spec.update(
+ dict(
+ description=dict(type="str", required=True, aliases=["name"]),
+ ip_type=dict(type="str", choices=["v4"], default="v4"),
+ ip_block=dict(type="str"),
+ prefix_length=dict(type="int"),
+ region=dict(type="str"),
+ state=dict(type="str", choices=["present", "absent"], default="present"),
+ ) # type: ignore
+ )
+
+ module = AnsibleModule(
+ argument_spec=argument_spec,
+ required_if=(
+ (
+ "state",
+ "present",
+ ("ip_type", "ip_block", "prefix_length", "region"),
+ ),
+ ),
+ supports_check_mode=True,
+ )
+
+ vultr = AnsibleVultr(
+ module=module,
+ namespace="vultr_vpc2",
+ resource_path="/vpc2",
+ ressource_result_key_singular="vpc",
+ resource_create_param_keys=[
+ "description",
+ "ip_type",
+ "ip_block",
+ "prefix_length",
+ "region",
+ ],
+ resource_update_param_keys=["description"],
+ resource_key_name="description",
+ resource_update_method="PUT",
+ )
+
+ if module.params.get("state") == "absent": # type: ignore
+ vultr.absent()
+ else:
+ vultr.present()
+
+
+if __name__ == "__main__":
+ main()
diff --git a/ansible_collections/vultr/cloud/plugins/modules/vpc2_info.py b/ansible_collections/vultr/cloud/plugins/modules/vpc2_info.py
new file mode 100644
index 000000000..c71c25d14
--- /dev/null
+++ b/ansible_collections/vultr/cloud/plugins/modules/vpc2_info.py
@@ -0,0 +1,122 @@
+#!/usr/bin/python
+#
+# Copyright (c) 2023, René Moser <mail@renemoser.net>
+# 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
+
+
+DOCUMENTATION = """
+---
+module: vpc2_info
+short_description: Gather information about the Vultr VPCs 2.0
+description:
+ - Gather information about VPCs 2.0 available.
+version_added: "1.9.0"
+author:
+ - "René Moser (@resmo)"
+extends_documentation_fragment:
+ - vultr.cloud.vultr_v2
+"""
+
+EXAMPLES = """
+- name: Gather Vultr VPCs 2.0 information
+ vultr.cloud.vpc2_info:
+ register: result
+
+- name: Print the gathered information
+ ansible.builtin.debug:
+ var: result.vultr_vpc2_info
+"""
+
+RETURN = """
+---
+vultr_api:
+ description: Response from Vultr API with a few additions/modification.
+ returned: success
+ type: dict
+ contains:
+ api_timeout:
+ description: Timeout used for the API requests.
+ returned: success
+ type: int
+ sample: 60
+ api_retries:
+ description: Amount of max retries for the API requests.
+ returned: success
+ type: int
+ sample: 5
+ api_retry_max_delay:
+ description: Exponential backoff delay in seconds between retries up to this max delay value.
+ returned: success
+ type: int
+ sample: 12
+ api_endpoint:
+ description: Endpoint used for the API requests.
+ returned: success
+ type: str
+ sample: "https://api.vultr.com/v2"
+vultr_vpc2_info:
+ description: Response from Vultr API as list.
+ returned: success
+ type: list
+ contains:
+ id:
+ description: ID of the VPC.
+ returned: success
+ type: str
+ sample: cb676a46-66fd-4dfb-b839-443f2e6c0b60
+ description:
+ description: Description of the VPC.
+ returned: success
+ type: str
+ sample: my vpc
+ ip_block:
+ description: Subnet of the VPC.
+ returned: success
+ type: str
+ sample: 10.99.1.0
+ prefix_length:
+ description: The number of bits for the netmask in CIDR notation.
+ returned: success
+ type: int
+ sample: 24
+ date_created:
+ description: Date the VPC was created.
+ returned: success
+ type: str
+ sample: "2023-08-20T19:39:20+00:00"
+ region:
+ description: The region the VPC is located in.
+ returned: success
+ type: str
+ sample: ewr
+"""
+
+from ansible.module_utils.basic import AnsibleModule
+
+from ..module_utils.vultr_v2 import AnsibleVultr, vultr_argument_spec
+
+
+def main():
+ argument_spec = vultr_argument_spec()
+
+ module = AnsibleModule(
+ argument_spec=argument_spec,
+ supports_check_mode=True,
+ )
+
+ vultr = AnsibleVultr(
+ module=module,
+ namespace="vultr_vpc2_info",
+ resource_path="/vpc2",
+ ressource_result_key_singular="vpc",
+ )
+
+ vultr.get_result(vultr.query_list())
+
+
+if __name__ == "__main__":
+ main()
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/_reset_cloud/aliases b/ansible_collections/vultr/cloud/tests/integration/targets/_reset_cloud/aliases
new file mode 100644
index 000000000..8a729dddd
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/_reset_cloud/aliases
@@ -0,0 +1,2 @@
+cloud/vultr
+needs/target/cleanup
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/_reset_cloud/tasks/main.yml b/ansible_collections/vultr/cloud/tests/integration/targets/_reset_cloud/tasks/main.yml
new file mode 100644
index 000000000..39bfc64b3
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/_reset_cloud/tasks/main.yml
@@ -0,0 +1,4 @@
+---
+- ansible.builtin.import_role:
+ name: cleanup
+ tasks_from: cleanup_all
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/aliases b/ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/aliases
new file mode 100644
index 000000000..c749ce7ca
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/aliases
@@ -0,0 +1,3 @@
+cloud/vultr
+needs/target/common
+needs/target/cleanup
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/defaults/main.yml b/ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/defaults/main.yml
new file mode 100644
index 000000000..796d8b9f2
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/defaults/main.yml
@@ -0,0 +1,46 @@
+# Copyright (c) 2023, René Moser <mail@renemoser.net>
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+---
+vultr_bare_metal_ssh_key_name: "{{ vultr_resource_prefix }}_bare_metal_sshkey"
+vultr_bare_metal_ssh_key: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAgEAyWYItY+3w5b8PdGRoz0oY5mufqydW96naE+VM3JSvJFAUS08rAjQQpQ03ymoALeHQy6JVZbcgecxn6p0pAOINQdqufn4udPtOPCtMjNiPGpkSM9ah/6X5+kvyWMNrvlf+Ld4OOoszP5sAkgQzIbrFQAm41XknBUha0zkewZwfrVhain4pnDjV7wCcChId/Q/Gbi4xMtXkisznWcAJcueBs3EEZDKhJ5q0VeWSJEhYJDLFN1sOxF0AIUnMrOhfKQ/LjgREXPB6uCl899INUTXRNNjRpeMXyJ2wMMmOAbua2qEd1r13Bu1n+6A823Hzb33fyMXuqWnJwBJ4DCvMlGuEsfuOK+xk7DaBfLHbcM6fsPk0/4psTE6YLgC41remr6+u5ZWsY/faMtSnNPie8Z8Ov0DIYGdhbJjUXk1HomxRV9+ZfZ2Ob8iCwlaAQAyEUM6fs3Kxt8pBD8dx1HOkhsfBWPvuDr5y+kqE7H8/MuPDTc0QgH2pjUMpmw/XBwNDHshVEjrZvtICOjOLUJxcowLO1ivNYwPwowQxfisMy56LfYdjsOslBiqsrkAqvNGm1zu8wKHeqVN9w5l3yUELpvubfm9NKIvYcl6yWF36T0c5vE+g0DU/Jy4XpTj0hZG9QV2mRQcLJnd2pxQtJT7cPFtrn/+tgRxzjEtbDXummDV4sE= ansible@example.com"
+
+vultr_bare_metals:
+ - label: "{{ vultr_resource_prefix }}_bm1"
+ hostname: myhostname
+ user_data: |
+ #cloud-config
+ packages:
+ - htop
+ user_data_update: |
+ #cloud-config
+ packages:
+ - htop
+ - vim
+ plan: vbm-6c-32gb
+ plan_update: vbm-6c-32gb
+ ssh_keys:
+ - "{{ vultr_bare_metal_ssh_key_name }}"
+ tags:
+ - one
+ - two
+ tags_update:
+ - three
+ - four
+ region: ams
+ os: Debian 12 x64 (bookworm)
+ enable_ipv6: false
+ enable_ipv6_update: true
+ # vpc2s:
+ # - "{{ vultr_resource_prefix }}_instance_vpc2_1"
+ # vpc2s_update:
+ # - "{{ vultr_resource_prefix }}_instance_vpc2_2"
+
+vutr_bare_metal_vpc2s: []
+ # - description: "{{ vultr_resource_prefix }}_instance_vpc2_1"
+ # subnet: 192.168.42.0
+ # cidr: 24
+ # region: ams
+ # - description: "{{ vultr_resource_prefix }}_instance_vpc2_2"
+ # subnet: 192.168.23.0
+ # cidr: 24
+ # region: ams
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/meta/main.yml b/ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/meta/main.yml
new file mode 100644
index 000000000..2083f0e12
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/meta/main.yml
@@ -0,0 +1,3 @@
+---
+dependencies:
+ - common
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/tasks/absent.yml b/ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/tasks/absent.yml
new file mode 100644
index 000000000..bee8df6f9
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/tasks/absent.yml
@@ -0,0 +1,38 @@
+---
+- name: bare metal info
+ ansible.builtin.debug:
+ var: bare_metal
+
+- name: test absent bare metal in check mode
+ vultr.cloud.bare_metal:
+ label: "{{ bare_metal.label }}"
+ region: "{{ bare_metal.region }}"
+ state: absent
+ register: result
+ check_mode: true
+- name: verify test absent bare metal in check mode
+ ansible.builtin.assert:
+ that:
+ - result is changed
+
+- name: test absent bare metal
+ vultr.cloud.bare_metal:
+ label: "{{ bare_metal.label }}"
+ region: "{{ bare_metal.region }}"
+ state: absent
+ register: result
+- name: verify test absent bare metal
+ ansible.builtin.assert:
+ that:
+ - result is changed
+
+- name: test absent bare metal idempotence
+ vultr.cloud.bare_metal:
+ label: "{{ bare_metal.label }}"
+ region: "{{ bare_metal.region }}"
+ state: absent
+ register: result
+- name: verify test absent bare metal idempotence
+ ansible.builtin.assert:
+ that:
+ - result is not changed
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/tasks/failures.yml b/ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/tasks/failures.yml
new file mode 100644
index 000000000..769dbe02b
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/tasks/failures.yml
@@ -0,0 +1,55 @@
+---
+- name: test fail if missing arguments
+ vultr.cloud.bare_metal:
+ register: result
+ ignore_errors: true
+- name: verify test fail if missing arguments
+ ansible.builtin.assert:
+ that:
+ - result is failed
+ - 'result.msg == "missing required arguments: label, region"'
+
+- name: test fail if missing arguments required one of
+ vultr.cloud.bare_metal:
+ label: my label
+ plan: a plan
+ region: a region
+ register: result
+ ignore_errors: true
+- name: verify test fail if missing arguments required one of
+ ansible.builtin.assert:
+ that:
+ - result is failed
+ - '"one of the following required" in result.msg'
+
+- name: test fail if ssh key not found
+ vultr.cloud.bare_metal:
+ label: my label
+ plan: a plan
+ region: a region
+ os: Debian 12 x64 (bookworm)
+ ssh_keys:
+ - does-not-exist
+ register: result
+ ignore_errors: true
+- name: verify test fail if ssh key not found
+ ansible.builtin.assert:
+ that:
+ - result is failed
+ - '"SSH key names not found: does-not-exist" in result.msg'
+
+- name: test fail if vpc not found
+ vultr.cloud.bare_metal:
+ label: my label
+ plan: a plan
+ region: a region
+ os: Debian 12 x64 (bookworm)
+ vpc2s:
+ - does-not-exist
+ register: result
+ ignore_errors: true
+- name: verify test fail if vpc not found
+ ansible.builtin.assert:
+ that:
+ - result is failed
+ - '"VPCs (v2) not found: does-not-exist" in result.msg'
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/tasks/main.yml b/ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/tasks/main.yml
new file mode 100644
index 000000000..856d7e307
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/tasks/main.yml
@@ -0,0 +1,13 @@
+---
+- block:
+ - ansible.builtin.import_tasks: tests.yml
+ always:
+ - ansible.builtin.import_role:
+ name: cleanup
+ tasks_from: cleanup_bare_metal
+ - ansible.builtin.import_role:
+ name: cleanup
+ tasks_from: cleanup_ssh_key
+ - ansible.builtin.import_role:
+ name: cleanup
+ tasks_from: cleanup_vpc2
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/tasks/present.yml b/ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/tasks/present.yml
new file mode 100644
index 000000000..e3915ee45
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/tasks/present.yml
@@ -0,0 +1,152 @@
+---
+- name: bare_metal info
+ ansible.builtin.debug:
+ var: bare_metal
+
+- name: test create bare_metal in check mode
+ vultr.cloud.bare_metal:
+ label: "{{ bare_metal.label }}"
+ hostname: "{{ bare_metal.hostname | default(omit) }}"
+ user_data: "{{ bare_metal.user_data | default(omit) }}"
+ ssh_keys: "{{ bare_metal.ssh_keys | default(omit) }}"
+ plan: "{{ bare_metal.plan }}"
+ enable_ipv6: "{{ bare_metal.enable_ipv6 | default(omit) }}"
+ tags: "{{ bare_metal.tags | default(omit) }}"
+ region: "{{ bare_metal.region }}"
+ os: "{{ bare_metal.os | default(omit) }}"
+ app: "{{ bare_metal.app | default(omit) }}"
+ image: "{{ bare_metal.image | default(omit) }}"
+ snapshot: "{{ bare_metal.snapshot | default(omit) }}"
+ vpc2s: "{{ bare_metal.vpc2s | default(omit) }}"
+ register: result
+ check_mode: true
+- name: verify test create bare_metal in check mode
+ ansible.builtin.assert:
+ that:
+ - result is changed
+
+- name: test create bare_metal
+ vultr.cloud.bare_metal:
+ label: "{{ bare_metal.label }}"
+ hostname: "{{ bare_metal.hostname | default(omit) }}"
+ user_data: "{{ bare_metal.user_data | default(omit) }}"
+ ssh_keys: "{{ bare_metal.ssh_keys | default(omit) }}"
+ plan: "{{ bare_metal.plan }}"
+ enable_ipv6: "{{ bare_metal.enable_ipv6 | default(omit) }}"
+ tags: "{{ bare_metal.tags | default(omit) }}"
+ region: "{{ bare_metal.region }}"
+ os: "{{ bare_metal.os | default(omit) }}"
+ app: "{{ bare_metal.app | default(omit) }}"
+ image: "{{ bare_metal.image | default(omit) }}"
+ snapshot: "{{ bare_metal.snapshot | default(omit) }}"
+ vpc2s: "{{ bare_metal.vpc2s | default(omit) }}"
+ register: result
+- name: verify test create bare_metal
+ ansible.builtin.assert:
+ that:
+ - result is changed
+ - result.vultr_bare_metal.plan == bare_metal.plan
+ - result.vultr_bare_metal.region == bare_metal.region
+ - result.vultr_bare_metal.enable_ipv6 == bare_metal.enable_ipv6
+ # - result.vultr_bare_metal.vpc2s | selectattr('description','equalto','{{ vultr_resource_prefix }}_bare_metal_vpc2_1') | list | count == 1
+
+- name: test create bare_metal idempotence
+ vultr.cloud.bare_metal:
+ label: "{{ bare_metal.label }}"
+ hostname: "{{ bare_metal.hostname | default(omit) }}"
+ user_data: "{{ bare_metal.user_data | default(omit) }}"
+ ssh_keys: "{{ bare_metal.ssh_keys | default(omit) }}"
+ plan: "{{ bare_metal.plan }}"
+ enable_ipv6: "{{ bare_metal.enable_ipv6 | default(omit) }}"
+ tags: "{{ bare_metal.tags | default(omit) }}"
+ region: "{{ bare_metal.region }}"
+ os: "{{ bare_metal.os | default(omit) }}"
+ app: "{{ bare_metal.app | default(omit) }}"
+ image: "{{ bare_metal.image | default(omit) }}"
+ snapshot: "{{ bare_metal.snapshot | default(omit) }}"
+ vpc2s: "{{ bare_metal.vpc2s | default(omit) }}"
+ register: result
+- name: verify test create bare_metal idempotence
+ ansible.builtin.assert:
+ that:
+ - result is not changed
+ - result.vultr_bare_metal.plan == bare_metal.plan
+ - result.vultr_bare_metal.region == bare_metal.region
+ - result.vultr_bare_metal.enable_ipv6 == bare_metal.enable_ipv6
+ # - result.vultr_bare_metal.vpc2s | selectattr('description','equalto','{{ vultr_resource_prefix }}_bare_metal_vpc2_1') | list | count == 1
+
+- name: test update bare_metal in check mode
+ vultr.cloud.bare_metal:
+ label: "{{ bare_metal.label }}"
+ hostname: "{{ bare_metal.hostname | default(omit) }}"
+ user_data: "{{ bare_metal.user_data_update | default(omit) }}"
+ ssh_keys: "{{ bare_metal.ssh_keys | default(omit) }}"
+ plan: "{{ bare_metal.plan_update }}"
+ enable_ipv6: "{{ bare_metal.enable_ipv6_update | default(omit) }}"
+ tags: "{{ bare_metal.tags_update | default(omit) }}"
+ region: "{{ bare_metal.region }}"
+ os: "{{ bare_metal.os | default(omit) }}"
+ app: "{{ bare_metal.app | default(omit) }}"
+ image: "{{ bare_metal.image | default(omit) }}"
+ snapshot: "{{ bare_metal.snapshot | default(omit) }}"
+ vpc2s: "{{ bare_metal.vpc2s_update | default(omit) }}"
+ register: result
+ check_mode: true
+- name: verify test update bare_metal in check mode
+ ansible.builtin.assert:
+ that:
+ - result is changed
+ - result.vultr_bare_metal.plan == bare_metal.plan
+ - result.vultr_bare_metal.region == bare_metal.region
+ - result.vultr_bare_metal.enable_ipv6 == bare_metal.enable_ipv6
+ # - result.vultr_bare_metal.vpc2s | selectattr('description','equalto','{{ vultr_resource_prefix }}_bare_metal_vpc2_2') | list | count == 1
+
+- name: test update bare_metal
+ vultr.cloud.bare_metal:
+ label: "{{ bare_metal.label }}"
+ hostname: "{{ bare_metal.hostname | default(omit) }}"
+ user_data: "{{ bare_metal.user_data_update | default(omit) }}"
+ ssh_keys: "{{ bare_metal.ssh_keys | default(omit) }}"
+ plan: "{{ bare_metal.plan_update }}"
+ enable_ipv6: "{{ bare_metal.enable_ipv6_update | default(omit) }}"
+ tags: "{{ bare_metal.tags_update | default(omit) }}"
+ region: "{{ bare_metal.region }}"
+ os: "{{ bare_metal.os | default(omit) }}"
+ app: "{{ bare_metal.app | default(omit) }}"
+ image: "{{ bare_metal.image | default(omit) }}"
+ snapshot: "{{ bare_metal.snapshot | default(omit) }}"
+ vpc2s: "{{ bare_metal.vpc2s_update | default(omit) }}"
+ register: result
+- name: verify test update bare_metal
+ ansible.builtin.assert:
+ that:
+ - result is changed
+ - result.vultr_bare_metal.plan == bare_metal.plan_update
+ - result.vultr_bare_metal.region == bare_metal.region
+ - result.vultr_bare_metal.enable_ipv6 == bare_metal.enable_ipv6_update
+ # - result.vultr_bare_metal.vpc2s | selectattr('description','equalto','{{ vultr_resource_prefix }}_bare_metal_vpc2_2') | list | count == 1
+
+- name: test update bare_metal idempotence
+ vultr.cloud.bare_metal:
+ label: "{{ bare_metal.label }}"
+ hostname: "{{ bare_metal.hostname | default(omit) }}"
+ user_data: "{{ bare_metal.user_data_update | default(omit) }}"
+ ssh_keys: "{{ bare_metal.ssh_keys | default(omit) }}"
+ plan: "{{ bare_metal.plan_update }}"
+ enable_ipv6: "{{ bare_metal.enable_ipv6_update | default(omit) }}"
+ tags: "{{ bare_metal.tags_update | default(omit) }}"
+ region: "{{ bare_metal.region }}"
+ os: "{{ bare_metal.os | default(omit) }}"
+ app: "{{ bare_metal.app | default(omit) }}"
+ image: "{{ bare_metal.image | default(omit) }}"
+ snapshot: "{{ bare_metal.snapshot | default(omit) }}"
+ vpc2s: "{{ bare_metal.vpc2s_update | default(omit) }}"
+ register: result
+- name: verify test update bare_metal idempotence
+ ansible.builtin.assert:
+ that:
+ - result is not changed
+ - result.vultr_bare_metal.plan == bare_metal.plan_update
+ - result.vultr_bare_metal.region == bare_metal.region
+ - result.vultr_bare_metal.enable_ipv6 == bare_metal.enable_ipv6_update
+ # - result.vultr_bare_metal.vpc2s | selectattr('description','equalto','{{ vultr_resource_prefix }}_bare_metal_vpc2_2') | list | count == 1
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/tasks/tests.yml b/ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/tasks/tests.yml
new file mode 100644
index 000000000..1f061896a
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/bare_metal/tasks/tests.yml
@@ -0,0 +1,52 @@
+# Copyright (c) 2023, René Moser <mail@renemoser.net>
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+---
+- name: setup
+ vultr.cloud.bare_metal:
+ label: "{{ bare_metal.label }}"
+ region: "{{ bare_metal.region }}"
+ state: absent
+ with_items: "{{ vultr_bare_metals }}"
+ loop_control:
+ loop_var: bare_metal
+
+- ansible.builtin.import_tasks: failures.yml
+
+# - name: setup ssh key
+# vultr.cloud.ssh_key:
+# name: "{{ vultr_bare_metal_ssh_key_name }}"
+# ssh_key: "{{ vultr_bare_metal_ssh_key }}"
+
+# - name: setup vpc2s
+# vultr.cloud.vpc2:
+# description: "{{ item.description }}"
+# ip_block: "{{ item.subnet }}"
+# prefix_length: "{{ item.cidr }}"
+# region: "{{ item.region }}"
+# with_items: "{{ vutr_bare_metal_vpc2s }}"
+
+# - ansible.builtin.include_tasks: present.yml
+# with_items: "{{ vultr_bare_metals }}"
+# loop_control:
+# loop_var: bare_metal
+
+# - ansible.builtin.include_tasks: absent.yml
+# with_items: "{{ vultr_bare_metals }}"
+# loop_control:
+# loop_var: bare_metal
+
+# - name: cleanup ssh key
+# vultr.cloud.ssh_key:
+# name: "{{ vultr_bare_metal_ssh_key_name }}"
+# state: absent
+
+# - name: cleanup vpc2s
+# vultr.cloud.vpc:
+# description: "{{ item.description }}"
+# region: "{{ item.region }}"
+# state: absent
+# with_items: "{{ vutr_bare_metal_vpc2s }}"
+# retries: 5
+# delay: 3
+# register: result
+# until: result is not failed
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/block_storage_info/tasks/tests.yml b/ansible_collections/vultr/cloud/tests/integration/targets/block_storage_info/tasks/tests.yml
index 2f836ea09..40e599378 100644
--- a/ansible_collections/vultr/cloud/tests/integration/targets/block_storage_info/tasks/tests.yml
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/block_storage_info/tasks/tests.yml
@@ -19,7 +19,7 @@
- name: verify test gather vultr block storage volume info in check mode
ansible.builtin.assert:
that:
- - result.vultr_block_storage_info|selectattr('label','equalto','{{ vultr_block_storage_name }}') | list | count == 1
+ - result.vultr_block_storage_info|selectattr('label','equalto',vultr_block_storage_name) | list | count == 1
- name: test gather vultr block storage volume info
vultr.cloud.block_storage_info:
@@ -28,7 +28,7 @@
- name: verify test gather vultr block storage volume info
ansible.builtin.assert:
that:
- - result.vultr_block_storage_info|selectattr('label','equalto','{{ vultr_block_storage_name }}') | list | count == 1
+ - result.vultr_block_storage_info|selectattr('label','equalto',vultr_block_storage_name) | list | count == 1
- name: Delete the block storage volume
vultr.cloud.block_storage:
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/cleanup/tasks/cleanup_all.yml b/ansible_collections/vultr/cloud/tests/integration/targets/cleanup/tasks/cleanup_all.yml
new file mode 100644
index 000000000..b3e84c6f1
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/cleanup/tasks/cleanup_all.yml
@@ -0,0 +1,19 @@
+- set_fact:
+ vultr_resource_prefix: ansible-test-
+
+- debug:
+ msg: Cleaning up resources with prefix {{ vultr_resource_prefix }}
+
+- ansible.builtin.import_tasks: cleanup_instance.yml
+- ansible.builtin.import_tasks: cleanup_bare_metal.yml
+- ansible.builtin.import_tasks: cleanup_ssh_key.yml
+- ansible.builtin.import_tasks: cleanup_vpc.yml
+- ansible.builtin.import_tasks: cleanup_vpc2.yml
+- ansible.builtin.import_tasks: cleanup_firewall_group.yml
+- ansible.builtin.import_tasks: cleanup_snapshot.yml
+- ansible.builtin.import_tasks: cleanup_user.yml
+- ansible.builtin.import_tasks: cleanup_dns_domain.yml
+- ansible.builtin.import_tasks: cleanup_block_storage.yml
+- ansible.builtin.import_tasks: cleanup_startup_script.yml
+- ansible.builtin.import_tasks: cleanup_reserved_ip.yml
+- ansible.builtin.import_tasks: cleanup_network.yml
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/cleanup/tasks/cleanup_bare_metal.yml b/ansible_collections/vultr/cloud/tests/integration/targets/cleanup/tasks/cleanup_bare_metal.yml
new file mode 100644
index 000000000..21c158669
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/cleanup/tasks/cleanup_bare_metal.yml
@@ -0,0 +1,29 @@
+---
+- name: cleanup
+ when: vultr_api_key
+ block:
+ - name: List bare metals
+ ansible.builtin.uri:
+ url: "{{ vultr_api_url }}/bare-metals"
+ headers:
+ Authorization: Bearer {{ vultr_api_key }}
+ status_code: 200
+ register: res
+ no_log: true
+
+ - name: Found resources
+ ansible.builtin.debug:
+ var: res.json
+
+ - name: Remove all bare metals created by this test run
+ ansible.builtin.uri:
+ url: "{{ vultr_api_url }}/bare-metals/{{ item.id }}"
+ method: "DELETE"
+ headers:
+ Authorization: Bearer {{ vultr_api_key }}
+ status_code: 204
+ when: vultr_resource_prefix in item.label
+ with_items: "{{ res.json.bare_metals }}"
+ loop_control:
+ label: "{{ item.label }}"
+ no_log: true
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/cleanup/tasks/cleanup_object_storage.yml b/ansible_collections/vultr/cloud/tests/integration/targets/cleanup/tasks/cleanup_object_storage.yml
new file mode 100644
index 000000000..555aefaf8
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/cleanup/tasks/cleanup_object_storage.yml
@@ -0,0 +1,29 @@
+---
+- name: cleanup
+ when: vultr_api_key
+ block:
+ - name: List object storages
+ ansible.builtin.uri:
+ url: "{{ vultr_api_url }}/object-storage"
+ headers:
+ Authorization: Bearer {{ vultr_api_key }}
+ status_code: 200
+ register: res
+ no_log: true
+
+ - name: Found resources
+ ansible.builtin.debug:
+ var: res.json
+
+ - name: Remove all object storages created by this test run
+ ansible.builtin.uri:
+ url: "{{ vultr_api_url }}/object-storage/{{ item.id }}"
+ method: "DELETE"
+ headers:
+ Authorization: Bearer {{ vultr_api_key }}
+ status_code: 204
+ when: vultr_resource_prefix in item.label
+ with_items: "{{ res.json.object_storages }}"
+ loop_control:
+ label: "{{ item.label }}"
+ no_log: true
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/cleanup/tasks/cleanup_vpc2.yml b/ansible_collections/vultr/cloud/tests/integration/targets/cleanup/tasks/cleanup_vpc2.yml
new file mode 100644
index 000000000..30b002d92
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/cleanup/tasks/cleanup_vpc2.yml
@@ -0,0 +1,28 @@
+---
+- name: cleanup
+ when: vultr_api_key
+ block:
+ - name: List vpc2s
+ ansible.builtin.uri:
+ url: "{{ vultr_api_url }}/vpc2"
+ headers:
+ Authorization: Bearer {{ vultr_api_key }}
+ status_code: 200
+ register: res
+ no_log: true
+
+ - name: Found resources
+ ansible.builtin.debug:
+ var: res.json
+
+ - name: Remove all vpc2s created by this test run
+ ansible.builtin.uri:
+ url: "{{ vultr_api_url }}/vpc2/{{ item.id }}"
+ method: "DELETE"
+ headers:
+ Authorization: Bearer {{ vultr_api_key }}
+ status_code: 204
+ when: vultr_resource_prefix in item.description
+ with_items: "{{ res.json.vpcs }}"
+ loop_control:
+ label: "{{ item.description }}"
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/dns_domain_info/tasks/tests.yml b/ansible_collections/vultr/cloud/tests/integration/targets/dns_domain_info/tasks/tests.yml
index f772ab637..3351f14bc 100644
--- a/ansible_collections/vultr/cloud/tests/integration/targets/dns_domain_info/tasks/tests.yml
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/dns_domain_info/tasks/tests.yml
@@ -15,7 +15,7 @@
- name: verify test gather vultr dns domain info in check mode
ansible.builtin.assert:
that:
- - result.vultr_dns_domain_info|selectattr('domain','equalto','{{ dns_domain_name }}') | list | count == 1
+ - result.vultr_dns_domain_info|selectattr('domain','equalto',dns_domain_name) | list | count == 1
- name: test gather vultr dns domain info
vultr.cloud.dns_domain_info:
@@ -24,4 +24,4 @@
- name: verify test gather vultr dns domain info
ansible.builtin.assert:
that:
- - result.vultr_dns_domain_info|selectattr('domain','equalto','{{ dns_domain_name }}') | list | count == 1
+ - result.vultr_dns_domain_info|selectattr('domain','equalto',dns_domain_name) | list | count == 1
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/dns_record/defaults/main.yml b/ansible_collections/vultr/cloud/tests/integration/targets/dns_record/defaults/main.yml
index e979dc89b..7e548fca3 100644
--- a/ansible_collections/vultr/cloud/tests/integration/targets/dns_record/defaults/main.yml
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/dns_record/defaults/main.yml
@@ -5,11 +5,18 @@ vultr_dns_domain_name: "{{ vultr_resource_prefix }}-t3-vultr.com"
vultr_dns_record_items:
# Single A record
- - name: test-www
+ - name: test-www-ip
data: 10.10.10.10
ttl: 400
update_data: 10.10.10.11
- update_ttl: 200
+ update_ttl: 400
+
+ # # Single A record
+ # - name: test-www-ttl
+ # data: 10.10.10.10
+ # ttl: 400
+ # update_data: 10.10.10.10
+ # update_ttl: 200
# Multiple A records
- name: test-www-multiple
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/dns_record/tasks/create_record.yml b/ansible_collections/vultr/cloud/tests/integration/targets/dns_record/tasks/create_record.yml
index 39964c138..409c1119a 100644
--- a/ansible_collections/vultr/cloud/tests/integration/targets/dns_record/tasks/create_record.yml
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/dns_record/tasks/create_record.yml
@@ -36,11 +36,11 @@
ansible.builtin.assert:
that:
- result is changed
- - result.vultr_dns_record.data == "{{ item.data }}"
- - result.vultr_dns_record.name == "{{ item.name | default("") }}"
- - result.vultr_dns_record.type == "{{ item.record_type | default('A') }}"
- - result.vultr_dns_record.ttl == {{ item.ttl | default(300) }}
- - result.vultr_dns_record.priority == {{ item.priority | default(-1) }}
+ - result.vultr_dns_record.data == item.data
+ - result.vultr_dns_record.name == item.name | default('')
+ - result.vultr_dns_record.type == item.record_type | default('A')
+ - result.vultr_dns_record.ttl == item.ttl | default(300)
+ - result.vultr_dns_record.priority == item.priority | default(-1)
- name: test create a dns record idempotence
vultr.cloud.dns_record:
@@ -55,8 +55,8 @@
ansible.builtin.assert:
that:
- result is not changed
- - result.vultr_dns_record.data == "{{ item.data }}"
- - result.vultr_dns_record.name == "{{ item.name | default("") }}"
- - result.vultr_dns_record.type == "{{ item.record_type | default('A') }}"
- - result.vultr_dns_record.ttl == {{ item.ttl | default(300) }}
- - result.vultr_dns_record.priority == {{ item.priority | default(-1) }}
+ - result.vultr_dns_record.data == item.data
+ - result.vultr_dns_record.name == item.name | default('')
+ - result.vultr_dns_record.type == item.record_type | default('A')
+ - result.vultr_dns_record.ttl == item.ttl | default(300)
+ - result.vultr_dns_record.priority == item.priority | default(-1)
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/dns_record/tasks/remove_record.yml b/ansible_collections/vultr/cloud/tests/integration/targets/dns_record/tasks/remove_record.yml
index 1207ea250..f3c33ac09 100644
--- a/ansible_collections/vultr/cloud/tests/integration/targets/dns_record/tasks/remove_record.yml
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/dns_record/tasks/remove_record.yml
@@ -15,11 +15,11 @@
ansible.builtin.assert:
that:
- result is changed
- - result.vultr_dns_record.data == "{{ item.update_data | default(item.data) }}"
- - result.vultr_dns_record.name == "{{ item.name | default("") }}"
- - result.vultr_dns_record.type == "{{ item.record_type | default('A') }}"
- - result.vultr_dns_record.ttl == {{ item.update_ttl | default(300) }}
- - result.vultr_dns_record.priority == {{ item.update_priority | default(item.priority | default(-1)) }}
+ - result.vultr_dns_record.data == item.update_data | default(item.data)
+ - result.vultr_dns_record.name == item.name | default('')
+ - result.vultr_dns_record.type == item.record_type | default('A')
+ - result.vultr_dns_record.ttl == item.update_ttl | default(300)
+ - result.vultr_dns_record.priority == item.update_priority | default(item.priority | default(-1))
- name: test remove second dns record in check mode
vultr.cloud.dns_record:
@@ -36,11 +36,11 @@
ansible.builtin.assert:
that:
- result is changed
- - result.vultr_dns_record.data == "{{ item.data | default(item.data) }}"
- - result.vultr_dns_record.name == "{{ item.name | default("") }}"
- - result.vultr_dns_record.type == "{{ item.record_type | default('A') }}"
- - result.vultr_dns_record.ttl == {{ item.ttl | default(300) }}
- - result.vultr_dns_record.priority == {{ item.priority | default(-1) }}
+ - result.vultr_dns_record.data == item.data | default(item.data)
+ - result.vultr_dns_record.name == item.name | default('')
+ - result.vultr_dns_record.type == item.record_type | default('A')
+ - result.vultr_dns_record.ttl == item.ttl | default(300)
+ - result.vultr_dns_record.priority == item.priority | default(-1)
when: item.multiple is defined and item.multiple == true
- name: test remove a dns record
@@ -56,11 +56,11 @@
ansible.builtin.assert:
that:
- result is changed
- - result.vultr_dns_record.data == "{{ item.update_data | default(item.data) }}"
- - result.vultr_dns_record.name == "{{ item.name | default("") }}"
- - result.vultr_dns_record.type == "{{ item.record_type | default('A') }}"
- - result.vultr_dns_record.ttl == {{ item.update_ttl | default(300) }}
- - result.vultr_dns_record.priority == {{ item.update_priority | default(item.priority | default(-1)) }}
+ - result.vultr_dns_record.data == item.update_data | default(item.data)
+ - result.vultr_dns_record.name == item.name | default('')
+ - result.vultr_dns_record.type == item.record_type | default('A')
+ - result.vultr_dns_record.ttl == item.update_ttl | default(300)
+ - result.vultr_dns_record.priority == item.update_priority | default(item.priority | default(-1))
- name: test remove second dns record
vultr.cloud.dns_record:
@@ -76,11 +76,11 @@
ansible.builtin.assert:
that:
- result is changed
- - result.vultr_dns_record.data == "{{ item.data }}"
- - result.vultr_dns_record.name == "{{ item.name | default("") }}"
- - result.vultr_dns_record.type == "{{ item.record_type | default('A') }}"
- - result.vultr_dns_record.ttl == {{ item.ttl | default(300) }}
- - result.vultr_dns_record.priority == {{ item.priority | default(-1) }}
+ - result.vultr_dns_record.data == item.data
+ - result.vultr_dns_record.name == item.name | default('')
+ - result.vultr_dns_record.type == item.record_type | default('A')
+ - result.vultr_dns_record.ttl == item.ttl | default(300)
+ - result.vultr_dns_record.priority == item.priority | default(-1)
when: item.multiple is defined and item.multiple == true
- name: test remove a dns record idempotence
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/dns_record/tasks/update_record.yml b/ansible_collections/vultr/cloud/tests/integration/targets/dns_record/tasks/update_record.yml
index f79beccf5..ad53333cb 100644
--- a/ansible_collections/vultr/cloud/tests/integration/targets/dns_record/tasks/update_record.yml
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/dns_record/tasks/update_record.yml
@@ -16,11 +16,11 @@
ansible.builtin.assert:
that:
- result is changed
- - result.vultr_dns_record.data == "{{ item.data }}"
- - result.vultr_dns_record.name == "{{ item.name | default("") }}"
- - result.vultr_dns_record.type == "{{ item.record_type | default('A') }}"
- - result.vultr_dns_record.ttl == {{ item.ttl | default(300) }}
- - result.vultr_dns_record.priority == {{ item.priority | default(-1) }}
+ - result.vultr_dns_record.data == item.data
+ - result.vultr_dns_record.name == item.name | default('')
+ - result.vultr_dns_record.type == item.record_type | default('A')
+ - result.vultr_dns_record.ttl == item.ttl | default(300)
+ - result.vultr_dns_record.priority == item.priority | default(-1)
when: item.multiple is undefined or item.multiple == false
- name: verify test add another dns record in check mode
ansible.builtin.assert:
@@ -43,11 +43,11 @@
ansible.builtin.assert:
that:
- result is changed
- - result.vultr_dns_record.data == "{{ item.update_data | default(item.data) }}"
- - result.vultr_dns_record.name == "{{ item.name | default("") }}"
- - result.vultr_dns_record.ttl == {{ item.update_ttl | default(300) }}
- - result.vultr_dns_record.type == "{{ item.record_type | default('A') }}"
- - result.vultr_dns_record.priority == {{ item.update_priority | default(-1) }}
+ - result.vultr_dns_record.data == item.update_data | default(item.data)
+ - result.vultr_dns_record.name == item.name | default('')
+ - result.vultr_dns_record.ttl == item.update_ttl | default(300)
+ - result.vultr_dns_record.type == item.record_type | default('A')
+ - result.vultr_dns_record.priority == item.update_priority | default(-1)
- name: test update or add another dns record idempotence
vultr.cloud.dns_record:
@@ -63,8 +63,8 @@
ansible.builtin.assert:
that:
- result is not changed
- - result.vultr_dns_record.data == "{{ item.update_data | default(item.data) }}"
- - result.vultr_dns_record.name == "{{ item.name | default("") }}"
- - result.vultr_dns_record.ttl == {{ item.update_ttl | default(300) }}
- - result.vultr_dns_record.type == "{{ item.record_type | default('A') }}"
- - result.vultr_dns_record.priority == {{ item.update_priority | default(-1) }}
+ - result.vultr_dns_record.data == item.update_data | default(item.data)
+ - result.vultr_dns_record.name == item.name | default('')
+ - result.vultr_dns_record.ttl == item.update_ttl | default(300)
+ - result.vultr_dns_record.type == item.record_type | default('A')
+ - result.vultr_dns_record.priority == item.update_priority | default(-1)
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/firewall_group_info/tasks/tests.yml b/ansible_collections/vultr/cloud/tests/integration/targets/firewall_group_info/tasks/tests.yml
index 390150418..866d9ed74 100644
--- a/ansible_collections/vultr/cloud/tests/integration/targets/firewall_group_info/tasks/tests.yml
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/firewall_group_info/tasks/tests.yml
@@ -17,7 +17,7 @@
- name: verify test gather vultr firewall group info in check mode
ansible.builtin.assert:
that:
- - result.vultr_firewall_group_info|selectattr('description','equalto','{{ firewall_group_name }}') | list | count == 1
+ - result.vultr_firewall_group_info|selectattr('description','equalto',firewall_group_name) | list | count == 1
- name: test gather vultr firewall group info
vultr.cloud.firewall_group_info:
@@ -26,7 +26,7 @@
- name: verify test gather vultr firewall group info
ansible.builtin.assert:
that:
- - result.vultr_firewall_group_info|selectattr('description','equalto','{{ firewall_group_name }}') | list | count == 1
+ - result.vultr_firewall_group_info|selectattr('description','equalto',firewall_group_name) | list | count == 1
- name: Delete the firewall group
vultr.cloud.firewall_group:
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/firewall_rule/defaults/main.yml b/ansible_collections/vultr/cloud/tests/integration/targets/firewall_rule/defaults/main.yml
index 7e96b1f83..f3695f8b3 100644
--- a/ansible_collections/vultr/cloud/tests/integration/targets/firewall_rule/defaults/main.yml
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/firewall_rule/defaults/main.yml
@@ -33,6 +33,9 @@ vultr_firewall_rules:
protocol: icmp
subnet: "0.0.0.0"
subnet_size: 0
+ # Port should be ignored, but should show a warning
+ port: "7"
+ port_assert: ""
- notes: web app
port: "8000:8080"
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/firewall_rule/tasks/rule_absent.yml b/ansible_collections/vultr/cloud/tests/integration/targets/firewall_rule/tasks/rule_absent.yml
index a8fe6f60a..4f16e2a11 100644
--- a/ansible_collections/vultr/cloud/tests/integration/targets/firewall_rule/tasks/rule_absent.yml
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/firewall_rule/tasks/rule_absent.yml
@@ -19,11 +19,11 @@
that:
- result is changed
- result.vultr_firewall_rule.action == "accept"
- - result.vultr_firewall_rule.protocol == "{{ rule.protocol | default('tcp') }}"
- - result.vultr_firewall_rule.port == "{{ rule.port | default('') }}"
- - result.vultr_firewall_rule.subnet == "{{ rule.subnet | default('') }}"
- - result.vultr_firewall_rule.subnet_size == {{ rule.subnet_size | default(0) }}
- - result.vultr_firewall_rule.ip_type == "{{ rule.ip_type | default('v4') }}"
+ - result.vultr_firewall_rule.protocol == rule.protocol | default('tcp')
+ - result.vultr_firewall_rule.port == rule.port_assert | default(rule.port | default(''))
+ - result.vultr_firewall_rule.subnet == rule.subnet | default('')
+ - result.vultr_firewall_rule.subnet_size == rule.subnet_size | default(0)
+ - result.vultr_firewall_rule.ip_type == rule.ip_type | default('v4')
- name: test absent firewall rule
vultr.cloud.firewall_rule:
@@ -40,11 +40,11 @@
that:
- result is changed
- result.vultr_firewall_rule.action == "accept"
- - result.vultr_firewall_rule.protocol == "{{ rule.protocol | default('tcp') }}"
- - result.vultr_firewall_rule.port == "{{ rule.port | default('') }}"
- - result.vultr_firewall_rule.subnet == "{{ rule.subnet | default('') }}"
- - result.vultr_firewall_rule.subnet_size == {{ rule.subnet_size | default(0) }}
- - result.vultr_firewall_rule.ip_type == "{{ rule.ip_type | default('v4') }}"
+ - result.vultr_firewall_rule.protocol == rule.protocol | default('tcp')
+ - result.vultr_firewall_rule.port == rule.port_assert | default(rule.port | default(''))
+ - result.vultr_firewall_rule.subnet == rule.subnet | default('')
+ - result.vultr_firewall_rule.subnet_size == rule.subnet_size | default(0)
+ - result.vultr_firewall_rule.ip_type == rule.ip_type | default('v4')
- name: test absent firewall rule idempotence
vultr.cloud.firewall_rule:
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/firewall_rule/tasks/rule_present.yml b/ansible_collections/vultr/cloud/tests/integration/targets/firewall_rule/tasks/rule_present.yml
index 9093b6aaf..f6ba9c4e4 100644
--- a/ansible_collections/vultr/cloud/tests/integration/targets/firewall_rule/tasks/rule_present.yml
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/firewall_rule/tasks/rule_present.yml
@@ -34,11 +34,11 @@
that:
- result is changed
- result.vultr_firewall_rule.action == "accept"
- - result.vultr_firewall_rule.protocol == "{{ rule.protocol | default('tcp') }}"
- - result.vultr_firewall_rule.port == "{{ rule.port | default('') }}"
- - result.vultr_firewall_rule.subnet == "{{ rule.subnet | default('') }}"
- - result.vultr_firewall_rule.subnet_size == {{ rule.subnet_size | default(0) }}
- - result.vultr_firewall_rule.ip_type == "{{ rule.ip_type | default('v4') }}"
+ - result.vultr_firewall_rule.protocol == rule.protocol | default('tcp')
+ - result.vultr_firewall_rule.port == rule.port_assert | default(rule.port | default(''))
+ - result.vultr_firewall_rule.subnet == rule.subnet | default('')
+ - result.vultr_firewall_rule.subnet_size == rule.subnet_size | default(0)
+ - result.vultr_firewall_rule.ip_type == rule.ip_type | default('v4')
- name: test create firewall rule idempotence
vultr.cloud.firewall_rule:
@@ -55,8 +55,8 @@
that:
- result is not changed
- result.vultr_firewall_rule.action == "accept"
- - result.vultr_firewall_rule.protocol == "{{ rule.protocol | default('tcp') }}"
- - result.vultr_firewall_rule.port == "{{ rule.port | default('') }}"
- - result.vultr_firewall_rule.subnet == "{{ rule.subnet | default('') }}"
- - result.vultr_firewall_rule.subnet_size == {{ rule.subnet_size | default(0) }}
- - result.vultr_firewall_rule.ip_type == "{{ rule.ip_type | default('v4') }}"
+ - result.vultr_firewall_rule.protocol == rule.protocol | default('tcp')
+ - result.vultr_firewall_rule.port == rule.port_assert | default(rule.port | default(''))
+ - result.vultr_firewall_rule.subnet == rule.subnet | default('')
+ - result.vultr_firewall_rule.subnet_size == rule.subnet_size | default(0)
+ - result.vultr_firewall_rule.ip_type == rule.ip_type | default('v4')
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/firewall_rule_info/tasks/tests.yml b/ansible_collections/vultr/cloud/tests/integration/targets/firewall_rule_info/tasks/tests.yml
index 96bca9803..a8cdf0eb0 100644
--- a/ansible_collections/vultr/cloud/tests/integration/targets/firewall_rule_info/tasks/tests.yml
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/firewall_rule_info/tasks/tests.yml
@@ -28,7 +28,7 @@
- name: verify test gather vultr firewall rule info in check mode
ansible.builtin.assert:
that:
- - result.vultr_firewall_rule_info|selectattr('notes','equalto','{{ firewall_group_name }}') | list | count == 1
+ - result.vultr_firewall_rule_info|selectattr('notes','equalto',firewall_group_name) | list | count == 1
- name: test gather vultr firewall rule info
vultr.cloud.firewall_rule_info:
@@ -37,7 +37,7 @@
- name: verify test gather vultr firewall rule info
ansible.builtin.assert:
that:
- - result.vultr_firewall_rule_info|selectattr('notes','equalto','{{ firewall_group_name }}') | list | count == 1
+ - result.vultr_firewall_rule_info|selectattr('notes','equalto',firewall_group_name) | list | count == 1
- name: Delete the firewall group
vultr.cloud.firewall_group:
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/instance/defaults/main.yml b/ansible_collections/vultr/cloud/tests/integration/targets/instance/defaults/main.yml
index 6683b5e85..dd280e9cf 100644
--- a/ansible_collections/vultr/cloud/tests/integration/targets/instance/defaults/main.yml
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/instance/defaults/main.yml
@@ -7,6 +7,10 @@ vultr_instance_ssh_key: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAgEAyWYItY+3w5b8PdGRoz0
vutr_instance_vpcs:
- description: "{{ vultr_resource_prefix }}_instance_vpc_1"
+ v4_subnet: 192.168.24.0
+ v4_subnet_mask: 24
+ region: ewr
+ - description: "{{ vultr_resource_prefix }}_instance_vpc_1"
v4_subnet: 192.168.42.0
v4_subnet_mask: 24
region: ams
@@ -42,13 +46,14 @@ vultr_instances:
- three
- four
region: ams
- os: Debian 11 x64 (bullseye)
+ os: Debian 12 x64 (bookworm)
backups: true
backups_update: false
ddos_protection: true
ddos_protection_update: false
enable_ipv6: false
enable_ipv6_update: true
+ user_scheme: limited
vpcs:
- "{{ vultr_resource_prefix }}_instance_vpc_1"
- "{{ vultr_resource_prefix }}_instance_vpc_2"
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/instance/tasks/failures.yml b/ansible_collections/vultr/cloud/tests/integration/targets/instance/tasks/failures.yml
index f22616901..3ce2c9e18 100644
--- a/ansible_collections/vultr/cloud/tests/integration/targets/instance/tasks/failures.yml
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/instance/tasks/failures.yml
@@ -52,4 +52,4 @@
ansible.builtin.assert:
that:
- result is failed
- - '"VPCs not found: does-not-exist" in result.msg'
+ - '"VPCs (v1) not found: does-not-exist" in result.msg'
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/instance/tasks/present.yml b/ansible_collections/vultr/cloud/tests/integration/targets/instance/tasks/present.yml
index 004a9c732..b82e1226f 100644
--- a/ansible_collections/vultr/cloud/tests/integration/targets/instance/tasks/present.yml
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/instance/tasks/present.yml
@@ -46,6 +46,7 @@
image: "{{ instance.image | default(omit) }}"
snapshot: "{{ instance.snapshot | default(omit) }}"
vpcs: "{{ instance.vpcs | default(omit) }}"
+ user_scheme: "{{ instance.user_scheme | default(omit) }}"
register: result
- name: verify test create instance
ansible.builtin.assert:
@@ -53,12 +54,13 @@
- result is changed
- result.vultr_instance.plan == instance.plan
- result.vultr_instance.region == instance.region
- - "result.vultr_instance.backups == '{{ 'enabled' if instance.backups else 'disabled' }}'"
+ # - "result.vultr_instance.backups == '{{ 'enabled' if instance.backups else 'disabled' }}'"
- result.vultr_instance.ddos_protection == instance.ddos_protection
- result.vultr_instance.enable_ipv6 == instance.enable_ipv6
- - result.vultr_instance.vpcs | selectattr('description','equalto','{{ vultr_resource_prefix }}_instance_vpc_1') | list | count == 1
- - result.vultr_instance.vpcs | selectattr('description','equalto','{{ vultr_resource_prefix }}_instance_vpc_2') | list | count == 1
+ - result.vultr_instance.vpcs | selectattr('description','equalto',vultr_resource_prefix ~ '_instance_vpc_1') | list | count == 1
+ - result.vultr_instance.vpcs | selectattr('description','equalto',vultr_resource_prefix ~ '_instance_vpc_2') | list | count == 1
- result.vultr_instance.vpcs | list | count == 2
+ - result.vultr_instance.user_scheme == instance.user_scheme | default('root')
- name: test create instance idempotence
vultr.cloud.instance:
@@ -78,6 +80,7 @@
image: "{{ instance.image | default(omit) }}"
snapshot: "{{ instance.snapshot | default(omit) }}"
vpcs: "{{ instance.vpcs | default(omit) }}"
+ user_scheme: "{{ instance.user_scheme | default(omit) }}"
register: result
- name: verify test create instance idempotence
ansible.builtin.assert:
@@ -85,12 +88,13 @@
- result is not changed
- result.vultr_instance.plan == instance.plan
- result.vultr_instance.region == instance.region
- - "result.vultr_instance.backups == '{{ 'enabled' if instance.backups else 'disabled' }}'"
+ # - "result.vultr_instance.backups == '{{ 'enabled' if instance.backups else 'disabled' }}'"
- result.vultr_instance.ddos_protection == instance.ddos_protection
- result.vultr_instance.enable_ipv6 == instance.enable_ipv6
- - result.vultr_instance.vpcs | selectattr('description','equalto','{{ vultr_resource_prefix }}_instance_vpc_1') | list | count == 1
- - result.vultr_instance.vpcs | selectattr('description','equalto','{{ vultr_resource_prefix }}_instance_vpc_2') | list | count == 1
+ - result.vultr_instance.vpcs | selectattr('description','equalto',vultr_resource_prefix ~ '_instance_vpc_1') | list | count == 1
+ - result.vultr_instance.vpcs | selectattr('description','equalto',vultr_resource_prefix ~ '_instance_vpc_2') | list | count == 1
- result.vultr_instance.vpcs | list | count == 2
+ - result.vultr_instance.user_scheme == instance.user_scheme | default('root')
- name: test update instance in check mode
vultr.cloud.instance:
@@ -110,6 +114,7 @@
image: "{{ instance.image | default(omit) }}"
snapshot: "{{ instance.snapshot | default(omit) }}"
vpcs: "{{ instance.vpcs_update | default(omit) }}"
+ user_scheme: "{{ instance.user_scheme | default(omit) }}"
register: result
check_mode: true
- name: verify test update instance in check mode
@@ -118,12 +123,13 @@
- result is changed
- result.vultr_instance.plan == instance.plan
- result.vultr_instance.region == instance.region
- - "result.vultr_instance.backups == '{{ 'enabled' if instance.backups else 'disabled' }}'"
+ # - "result.vultr_instance.backups == '{{ 'enabled' if instance.backups else 'disabled' }}'"
- result.vultr_instance.ddos_protection == instance.ddos_protection
- result.vultr_instance.enable_ipv6 == instance.enable_ipv6
- - result.vultr_instance.vpcs | selectattr('description','equalto','{{ vultr_resource_prefix }}_instance_vpc_1') | list | count == 1
- - result.vultr_instance.vpcs | selectattr('description','equalto','{{ vultr_resource_prefix }}_instance_vpc_2') | list | count == 1
+ - result.vultr_instance.vpcs | selectattr('description','equalto',vultr_resource_prefix ~ '_instance_vpc_1') | list | count == 1
+ - result.vultr_instance.vpcs | selectattr('description','equalto',vultr_resource_prefix ~ '_instance_vpc_2') | list | count == 1
- result.vultr_instance.vpcs | list | count == 2
+ - result.vultr_instance.user_scheme == instance.user_scheme | default('root')
- name: test update instance
vultr.cloud.instance:
@@ -143,6 +149,7 @@
image: "{{ instance.image | default(omit) }}"
snapshot: "{{ instance.snapshot | default(omit) }}"
vpcs: "{{ instance.vpcs_update | default(omit) }}"
+ user_scheme: "{{ instance.user_scheme | default(omit) }}"
register: result
- name: verify test update instance
ansible.builtin.assert:
@@ -150,12 +157,13 @@
- result is changed
- result.vultr_instance.plan == instance.plan_update
- result.vultr_instance.region == instance.region
- - "result.vultr_instance.backups == '{{ 'enabled' if instance.backups_update else 'disabled' }}'"
+ # - "result.vultr_instance.backups == '{{ 'enabled' if instance.backups else 'disabled' }}'"
- result.vultr_instance.ddos_protection == instance.ddos_protection_update
- result.vultr_instance.enable_ipv6 == instance.enable_ipv6_update
- - result.vultr_instance.vpcs | selectattr('description','equalto','{{ vultr_resource_prefix }}_instance_vpc_1') | list | count == 1
- - result.vultr_instance.vpcs | selectattr('description','equalto','{{ vultr_resource_prefix }}_instance_vpc_3') | list | count == 1
+ - result.vultr_instance.vpcs | selectattr('description','equalto',vultr_resource_prefix ~ '_instance_vpc_1') | list | count == 1
+ - result.vultr_instance.vpcs | selectattr('description','equalto',vultr_resource_prefix ~ '_instance_vpc_3') | list | count == 1
- result.vultr_instance.vpcs | list | count == 2
+ - result.vultr_instance.user_scheme == instance.user_scheme | default('root')
- name: test update instance idempotence
vultr.cloud.instance:
@@ -175,6 +183,7 @@
image: "{{ instance.image | default(omit) }}"
snapshot: "{{ instance.snapshot | default(omit) }}"
vpcs: "{{ instance.vpcs_update | default(omit) }}"
+ user_scheme: "{{ instance.user_scheme | default(omit) }}"
register: result
- name: verify test update instance idempotence
ansible.builtin.assert:
@@ -182,9 +191,10 @@
- result is not changed
- result.vultr_instance.plan == instance.plan_update
- result.vultr_instance.region == instance.region
- - "result.vultr_instance.backups == '{{ 'enabled' if instance.backups_update else 'disabled' }}'"
+ # - "result.vultr_instance.backups == '{{ 'enabled' if instance.backups else 'disabled' }}'"
- result.vultr_instance.ddos_protection == instance.ddos_protection_update
- result.vultr_instance.enable_ipv6 == instance.enable_ipv6_update
- - result.vultr_instance.vpcs | selectattr('description','equalto','{{ vultr_resource_prefix }}_instance_vpc_1') | list | count == 1
- - result.vultr_instance.vpcs | selectattr('description','equalto','{{ vultr_resource_prefix }}_instance_vpc_3') | list | count == 1
+ - result.vultr_instance.vpcs | selectattr('description','equalto',vultr_resource_prefix ~ '_instance_vpc_1') | list | count == 1
+ - result.vultr_instance.vpcs | selectattr('description','equalto',vultr_resource_prefix ~ '_instance_vpc_3') | list | count == 1
- result.vultr_instance.vpcs | list | count == 2
+ - result.vultr_instance.user_scheme == instance.user_scheme | default('root')
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/instance_info/tasks/tests.yml b/ansible_collections/vultr/cloud/tests/integration/targets/instance_info/tasks/tests.yml
index 204d071af..511d36dee 100644
--- a/ansible_collections/vultr/cloud/tests/integration/targets/instance_info/tasks/tests.yml
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/instance_info/tasks/tests.yml
@@ -21,8 +21,8 @@
- name: verify test gather vultr instance info in check mode
ansible.builtin.assert:
that:
- - result.vultr_instance_info|selectattr('label','search','^{{ vultr_resource_prefix }}') | list | count == 2
- - result.vultr_instance_info|selectattr('label','equalto','{{ vultr_resource_prefix }}_info1') | list | count == 1
+ - result.vultr_instance_info|selectattr('label','search','^' ~ vultr_resource_prefix) | list | count == 2
+ - result.vultr_instance_info|selectattr('label','equalto',vultr_resource_prefix ~ '_info1') | list | count == 1
- name: test gather vultr instance info
vultr.cloud.instance_info:
@@ -30,8 +30,8 @@
- name: verify test gather vultr instance info
ansible.builtin.assert:
that:
- - result.vultr_instance_info|selectattr('label','search','^{{ vultr_resource_prefix }}') | list | count == 2
- - result.vultr_instance_info|selectattr('label','equalto','{{ vultr_resource_prefix }}_info1') | list | count == 1
+ - result.vultr_instance_info|selectattr('label','search','^' ~ vultr_resource_prefix) | list | count == 2
+ - result.vultr_instance_info|selectattr('label','equalto',vultr_resource_prefix ~ '_info1') | list | count == 1
- name: test gather vultr instance info filter region
vultr.cloud.instance_info:
@@ -40,7 +40,7 @@
- name: verify test gather vultr instance info filter region
ansible.builtin.assert:
that:
- - result.vultr_instance_info|selectattr('label','search','^{{ vultr_resource_prefix }}') | list | count == 1
+ - result.vultr_instance_info|selectattr('label','search','^' ~ vultr_resource_prefix) | list | count == 1
- name: test gather vultr instance info filter label
vultr.cloud.instance_info:
@@ -49,8 +49,8 @@
- name: verify test gather vultr instance info
ansible.builtin.assert:
that:
- - result.vultr_instance_info|selectattr('label','search','^{{ vultr_resource_prefix }}') | list | count == 1
- - result.vultr_instance_info|selectattr('label','equalto','{{ vultr_resource_prefix }}_info2') | list | count == 1
+ - result.vultr_instance_info|selectattr('label','search','^' ~ vultr_resource_prefix) | list | count == 1
+ - result.vultr_instance_info|selectattr('label','equalto',vultr_resource_prefix ~ '_info2') | list | count == 1
- name: cleanup
vultr.cloud.instance:
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/object_storage/aliases b/ansible_collections/vultr/cloud/tests/integration/targets/object_storage/aliases
new file mode 100644
index 000000000..c749ce7ca
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/object_storage/aliases
@@ -0,0 +1,3 @@
+cloud/vultr
+needs/target/common
+needs/target/cleanup
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/object_storage/defaults/main.yml b/ansible_collections/vultr/cloud/tests/integration/targets/object_storage/defaults/main.yml
new file mode 100644
index 000000000..8c71c3d37
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/object_storage/defaults/main.yml
@@ -0,0 +1,4 @@
+---
+vultr_object_storage_name: "{{ vultr_resource_prefix }}-volume"
+vultr_object_storage_cluster1: del1.vultrobjects.com
+vultr_object_storage_cluster2: ams1.vultrobjects.com
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/object_storage/tasks/failures.yml b/ansible_collections/vultr/cloud/tests/integration/targets/object_storage/tasks/failures.yml
new file mode 100644
index 000000000..3b2a3066a
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/object_storage/tasks/failures.yml
@@ -0,0 +1,10 @@
+---
+- name: test fail if missing required
+ vultr.cloud.object_storage:
+ register: result
+ ignore_errors: true
+- name: verify test fail if missing required
+ ansible.builtin.assert:
+ that:
+ - result is failed
+ - 'result.msg == "missing required arguments: cluster, label"'
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/object_storage/tasks/main.yml b/ansible_collections/vultr/cloud/tests/integration/targets/object_storage/tasks/main.yml
new file mode 100644
index 000000000..0e2f60bf0
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/object_storage/tasks/main.yml
@@ -0,0 +1,8 @@
+---
+- block:
+ - ansible.builtin.import_tasks: failures.yml
+ - ansible.builtin.import_tasks: tests.yml
+ always:
+ - ansible.builtin.import_role:
+ name: cleanup
+ tasks_from: cleanup_object_storage
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/object_storage/tasks/tests.yml b/ansible_collections/vultr/cloud/tests/integration/targets/object_storage/tasks/tests.yml
new file mode 100644
index 000000000..bf73498c6
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/object_storage/tasks/tests.yml
@@ -0,0 +1,93 @@
+# Copyright (c) 2024, René Moser <mail@renemoser.net>
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+---
+- name: test create object storage in check mode
+ vultr.cloud.object_storage:
+ label: "{{ vultr_object_storage_name }}"
+ cluster: "{{ vultr_object_storage_cluster1 }}"
+ register: result
+ check_mode: true
+- name: verify test create object storage in check mode
+ ansible.builtin.assert:
+ that:
+ - result is changed
+
+- name: test create object storage cluster 1
+ vultr.cloud.object_storage:
+ label: "{{ vultr_object_storage_name }}"
+ cluster: "{{ vultr_object_storage_cluster1 }}"
+ register: result
+- name: verify test create object storage
+ ansible.builtin.assert:
+ that:
+ - result is changed
+ - result.vultr_object_storage.label == vultr_object_storage_name
+ - result.vultr_object_storage.s3_hostname == vultr_object_storage_cluster1
+
+- name: test create object storage cluster 2
+ vultr.cloud.object_storage:
+ label: "{{ vultr_object_storage_name }}"
+ cluster: "{{ vultr_object_storage_cluster2 }}"
+ register: result
+- name: verify test create object storage
+ ansible.builtin.assert:
+ that:
+ - result is changed
+ - result.vultr_object_storage.label == vultr_object_storage_name
+ - result.vultr_object_storage.s3_hostname == vultr_object_storage_cluster2
+
+- name: test create object storage idempotence
+ vultr.cloud.object_storage:
+ label: "{{ vultr_object_storage_name }}"
+ cluster: "{{ vultr_object_storage_cluster1 }}"
+ register: result
+- name: verify test create object storage idempotence
+ ansible.builtin.assert:
+ that:
+ - result is not changed
+ - result.vultr_object_storage.label == vultr_object_storage_name
+ - result.vultr_object_storage.s3_hostname == vultr_object_storage_cluster1
+
+- name: test delete object storage in check mode
+ vultr.cloud.object_storage:
+ label: "{{ vultr_object_storage_name }}"
+ cluster: "{{ vultr_object_storage_cluster1 }}"
+ state: absent
+ check_mode: true
+ register: result
+- name: verify test delete object storage in check mode
+ ansible.builtin.assert:
+ that:
+ - result is changed
+ - result.vultr_object_storage.label == vultr_object_storage_name
+ - result.vultr_object_storage.s3_hostname == vultr_object_storage_cluster1
+
+- name: test delete object storage
+ vultr.cloud.object_storage:
+ label: "{{ vultr_object_storage_name }}"
+ cluster: "{{ vultr_object_storage_cluster1 }}"
+ state: absent
+ register: result
+- name: verify test delete object storage
+ ansible.builtin.assert:
+ that:
+ - result is changed
+ - result.vultr_object_storage.label == vultr_object_storage_name
+ - result.vultr_object_storage.s3_hostname == vultr_object_storage_cluster1
+
+- name: test delete object storage idempotence
+ vultr.cloud.object_storage:
+ label: "{{ vultr_object_storage_name }}"
+ cluster: "{{ vultr_object_storage_cluster1 }}"
+ state: absent
+ register: result
+- name: verify test delete object storage idempotence
+ ansible.builtin.assert:
+ that:
+ - result is not changed
+
+- name: cleanup object storage cluster 2
+ vultr.cloud.object_storage:
+ label: "{{ vultr_object_storage_name }}"
+ cluster: "{{ vultr_object_storage_cluster2 }}"
+ state: absent
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/reserved_ip/aliases b/ansible_collections/vultr/cloud/tests/integration/targets/reserved_ip/aliases
index e69de29bb..c749ce7ca 100644
--- a/ansible_collections/vultr/cloud/tests/integration/targets/reserved_ip/aliases
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/reserved_ip/aliases
@@ -0,0 +1,3 @@
+cloud/vultr
+needs/target/common
+needs/target/cleanup
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/reserved_ip/defaults/main.yml b/ansible_collections/vultr/cloud/tests/integration/targets/reserved_ip/defaults/main.yml
index 60634dbeb..e88833c62 100644
--- a/ansible_collections/vultr/cloud/tests/integration/targets/reserved_ip/defaults/main.yml
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/reserved_ip/defaults/main.yml
@@ -1,9 +1,11 @@
# Copyright (c) 2021, René Moser <mail@renemoser.net>
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
---
-vultr_reserved_ip_name: "{{ vultr_resource_prefix }}-ip"
+vultr_reserved_ip_name: "{{ vultr_resource_prefix }}_reserved_ip"
+vultr_reserved_ip_region: ams
-# TODO: topic of changes
-vultr_server_name: "{{ vultr_resource_prefix }}_vm"
-vultr_server_os: CentOS 7 x64
-vultr_server_plan: 1024 MB RAM,25 GB SSD,1.00 TB BW
+vultr_instance:
+ label: "{{ vultr_resource_prefix }}_reserved_ip"
+ plan: vc2-1c-1gb
+ region: "{{ vultr_reserved_ip_region }}"
+ os: Debian 12 x64 (bookworm)
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/reserved_ip/tasks/tests.yml b/ansible_collections/vultr/cloud/tests/integration/targets/reserved_ip/tasks/tests.yml
index a46b56366..a8f5986be 100644
--- a/ansible_collections/vultr/cloud/tests/integration/targets/reserved_ip/tasks/tests.yml
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/reserved_ip/tasks/tests.yml
@@ -5,7 +5,7 @@
vultr.cloud.reserved_ip:
label: "{{ vultr_reserved_ip_name }}"
ip_type: v4
- region: ewr
+ region: "{{ vultr_reserved_ip_region }}"
state: absent
register: result
- name: verify setup
@@ -23,20 +23,18 @@
- result is failed
- 'result.msg == "missing required arguments: ip_type, label, region"'
-# TODO: topic of changes
-- name: setup create the server
- ngine_io.vultr.vultr_server:
- name: "{{ vultr_server_name }}"
- os: "{{ vultr_server_os }}"
- plan: "{{ vultr_server_plan }}"
- region: New Jersey
- register: server
+- name: setup instance
+ vultr.cloud.instance:
+ label: "{{ vultr_instance.label }}"
+ os: "{{ vultr_instance.os }}"
+ plan: "{{ vultr_instance.plan }}"
+ region: "{{ vultr_instance.region }}"
- name: test create reserved ip in check mode
vultr.cloud.reserved_ip:
label: "{{ vultr_reserved_ip_name }}"
ip_type: v4
- region: ewr
+ region: "{{ vultr_reserved_ip_region }}"
register: result
check_mode: true
- name: verify test create reserved ip in check mode
@@ -48,7 +46,7 @@
vultr.cloud.reserved_ip:
label: "{{ vultr_reserved_ip_name }}"
ip_type: v4
- region: ewr
+ region: "{{ vultr_reserved_ip_region }}"
register: result
- name: verify test create reserved ip
ansible.builtin.assert:
@@ -63,7 +61,7 @@
vultr.cloud.reserved_ip:
label: "{{ vultr_reserved_ip_name }}"
ip_type: v4
- region: ewr
+ region: "{{ vultr_reserved_ip_region }}"
register: result
- name: verify test create reserved ip idempotence
ansible.builtin.assert:
@@ -78,8 +76,8 @@
vultr.cloud.reserved_ip:
label: "{{ vultr_reserved_ip_name }}"
ip_type: v4
- region: ewr
- instance_name: "{{ vultr_server_name }}"
+ region: "{{ vultr_reserved_ip_region }}"
+ instance_name: "{{ vultr_instance.label }}"
register: result
check_mode: true
- name: verify test detach instance of reserved ip in check mode
@@ -95,8 +93,8 @@
vultr.cloud.reserved_ip:
label: "{{ vultr_reserved_ip_name }}"
ip_type: v4
- region: ewr
- instance_name: "{{ vultr_server_name }}"
+ region: "{{ vultr_reserved_ip_region }}"
+ instance_name: "{{ vultr_instance.label }}"
register: result
- name: verify test attach instance of reserved ip
ansible.builtin.assert:
@@ -111,8 +109,8 @@
vultr.cloud.reserved_ip:
label: "{{ vultr_reserved_ip_name }}"
ip_type: v4
- region: ewr
- instance_name: "{{ vultr_server_name }}"
+ region: "{{ vultr_reserved_ip_region }}"
+ instance_name: "{{ vultr_instance.label }}"
register: result
- name: verify test attach instance of reserved ip idempotence
ansible.builtin.assert:
@@ -127,7 +125,7 @@
vultr.cloud.reserved_ip:
label: "{{ vultr_reserved_ip_name }}"
ip_type: v4
- region: ewr
+ region: "{{ vultr_reserved_ip_region }}"
register: result
- name: verify test test ignore instance attached reserved ip idempotence
ansible.builtin.assert:
@@ -142,7 +140,7 @@
vultr.cloud.reserved_ip:
label: "{{ vultr_reserved_ip_name }}"
ip_type: v4
- region: ewr
+ region: "{{ vultr_reserved_ip_region }}"
instance_id: ""
register: result
check_mode: true
@@ -159,7 +157,7 @@
vultr.cloud.reserved_ip:
label: "{{ vultr_reserved_ip_name }}"
ip_type: v4
- region: ewr
+ region: "{{ vultr_reserved_ip_region }}"
instance_id: ""
register: result
- name: verify test detach instance of reserved ip
@@ -175,7 +173,7 @@
vultr.cloud.reserved_ip:
label: "{{ vultr_reserved_ip_name }}"
ip_type: v4
- region: ewr
+ region: "{{ vultr_reserved_ip_region }}"
instance_id: ""
register: result
- name: verify test detach instance of reserved ip idempotence
@@ -191,7 +189,7 @@
vultr.cloud.reserved_ip:
label: "{{ vultr_reserved_ip_name }}"
ip_type: v4
- region: ewr
+ region: "{{ vultr_reserved_ip_region }}"
state: absent
register: result
check_mode: true
@@ -208,7 +206,7 @@
vultr.cloud.reserved_ip:
label: "{{ vultr_reserved_ip_name }}"
ip_type: v4
- region: ewr
+ region: "{{ vultr_reserved_ip_region }}"
state: absent
register: result
- name: verify test absent reserved ip
@@ -225,7 +223,7 @@
vultr.cloud.reserved_ip:
label: "{{ vultr_reserved_ip_name }}"
ip_type: v4
- region: ewr
+ region: "{{ vultr_reserved_ip_region }}"
state: absent
register: result
- name: verify test absent reserved ip idempotence
@@ -233,8 +231,8 @@
that:
- result is not changed
-# TODO: topic of changes
-- name: cleanup the server
- ngine_io.vultr.vultr_server:
- name: "{{ vultr_server_name }}"
+- name: cleanup instance
+ vultr.cloud.instance:
+ label: "{{ vultr_instance.label }}"
+ region: "{{ vultr_instance.region }}"
state: absent
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/snapshot_info/tasks/tests.yml b/ansible_collections/vultr/cloud/tests/integration/targets/snapshot_info/tasks/tests.yml
index fe7a195ce..2168262dc 100644
--- a/ansible_collections/vultr/cloud/tests/integration/targets/snapshot_info/tasks/tests.yml
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/snapshot_info/tasks/tests.yml
@@ -17,7 +17,7 @@
- name: verify test gather vultr snapshot info in check mode
ansible.builtin.assert:
that:
- - result.vultr_snapshot_info|selectattr('description','equalto','{{ vultr_snapshot_description }}') | list | count == 1
+ - result.vultr_snapshot_info|selectattr('description','equalto',vultr_snapshot_description) | list | count == 1
- name: test gather snapshot info
vultr.cloud.snapshot_info:
@@ -26,7 +26,7 @@
- name: verify test gather vultr snapshot info
ansible.builtin.assert:
that:
- - result.vultr_snapshot_info|selectattr('description','equalto','{{ vultr_snapshot_description }}') | list | count == 1
+ - result.vultr_snapshot_info|selectattr('description','equalto',vultr_snapshot_description) | list | count == 1
- name: Delete the snapshot
vultr.cloud.snapshot:
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/ssh_key_info/tasks/tests.yml b/ansible_collections/vultr/cloud/tests/integration/targets/ssh_key_info/tasks/tests.yml
index 63ce48ee0..4b35406d2 100644
--- a/ansible_collections/vultr/cloud/tests/integration/targets/ssh_key_info/tasks/tests.yml
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/ssh_key_info/tasks/tests.yml
@@ -9,8 +9,8 @@
- name: verify test get vultr ssh key infos in check mode
ansible.builtin.assert:
that:
- - result.vultr_ssh_key_info|selectattr('name','equalto','{{ ssh_key_name }}') | list | count == 0
- - result.vultr_ssh_key_info|selectattr('ssh_key','equalto','{{ ssh_key_content }}') | list | count == 0
+ - result.vultr_ssh_key_info|selectattr('name','equalto',ssh_key_name) | list | count == 0
+ - result.vultr_ssh_key_info|selectattr('ssh_key','equalto',ssh_key_content) | list | count == 0
- name: Upload an ssh key
vultr.cloud.ssh_key:
@@ -25,8 +25,8 @@
- name: verify test get vultr ssh key infos in check mode
ansible.builtin.assert:
that:
- - result.vultr_ssh_key_info|selectattr('name','equalto','{{ ssh_key_name }}') | list | count == 1
- - result.vultr_ssh_key_info|selectattr('ssh_key','equalto','{{ ssh_key_content }}') | list | count == 1
+ - result.vultr_ssh_key_info|selectattr('name','equalto',ssh_key_name) | list | count == 1
+ - result.vultr_ssh_key_info|selectattr('ssh_key','equalto',ssh_key_content) | list | count == 1
- name: test get vultr ssh key info
vultr.cloud.ssh_key_info:
@@ -35,8 +35,8 @@
- name: verify test get vultr ssh key infos
ansible.builtin.assert:
that:
- - result.vultr_ssh_key_info|selectattr('name','equalto','{{ ssh_key_name }}') | list | count == 1
- - result.vultr_ssh_key_info|selectattr('ssh_key','equalto','{{ ssh_key_content }}') | list | count == 1
+ - result.vultr_ssh_key_info|selectattr('name','equalto',ssh_key_name) | list | count == 1
+ - result.vultr_ssh_key_info|selectattr('ssh_key','equalto',ssh_key_content) | list | count == 1
- name: Destroy the ssh key
vultr.cloud.ssh_key:
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/startup_script_info/tasks/tests.yml b/ansible_collections/vultr/cloud/tests/integration/targets/startup_script_info/tasks/tests.yml
index 730df6d71..ef142465f 100644
--- a/ansible_collections/vultr/cloud/tests/integration/targets/startup_script_info/tasks/tests.yml
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/startup_script_info/tasks/tests.yml
@@ -18,7 +18,7 @@
- name: verify test gather vultr startup script info in check mode
ansible.builtin.assert:
that:
- - result.vultr_startup_script_info|selectattr('name','equalto','{{ startup_script_name }}') | list | count == 1
+ - result.vultr_startup_script_info|selectattr('name','equalto',startup_script_name) | list | count == 1
- name: test gather vultr startup script info
vultr.cloud.startup_script_info:
@@ -27,7 +27,7 @@
- name: verify test gather vultr startup script info
ansible.builtin.assert:
that:
- - result.vultr_startup_script_info|selectattr('name','equalto','{{ startup_script_name }}') | list | count == 1
+ - result.vultr_startup_script_info|selectattr('name','equalto',startup_script_name) | list | count == 1
- name: Delete the script
vultr.cloud.startup_script:
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/vpc/defaults/main.yml b/ansible_collections/vultr/cloud/tests/integration/targets/vpc/defaults/main.yml
index 83923ffe8..524dbd470 100644
--- a/ansible_collections/vultr/cloud/tests/integration/targets/vpc/defaults/main.yml
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/vpc/defaults/main.yml
@@ -3,3 +3,4 @@ vultr_vpc_description: "{{ vultr_resource_prefix }}_vpc"
vultr_vpc_v4_subnet: 192.168.42.0
vultr_vpc_v4_subnet_mask: 24
vultr_vpc_region: ewr
+vultr_vpc_region_2: ams
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/vpc/tasks/tests.yml b/ansible_collections/vultr/cloud/tests/integration/targets/vpc/tasks/tests.yml
index 8ed2dfdc7..28793a7e2 100644
--- a/ansible_collections/vultr/cloud/tests/integration/targets/vpc/tasks/tests.yml
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/vpc/tasks/tests.yml
@@ -72,9 +72,38 @@
- result.vultr_vpc.v4_subnet == vultr_vpc_v4_subnet
- result.vultr_vpc.v4_subnet_mask == vultr_vpc_v4_subnet_mask
+- name: test create vpc in diff region but same description
+ vultr.cloud.vpc:
+ description: "{{ vultr_vpc_description }}"
+ v4_subnet: "{{ vultr_vpc_v4_subnet }}"
+ v4_subnet_mask: "{{ vultr_vpc_v4_subnet_mask }}"
+ region: "{{ vultr_vpc_region_2 }}"
+ register: result
+- name: verify test create vpc in diff region but same description
+ ansible.builtin.assert:
+ that:
+ - result is changed
+ - result.vultr_vpc.description == vultr_vpc_description
+ - result.vultr_vpc.region == vultr_vpc_region_2
+ - result.vultr_vpc.v4_subnet == vultr_vpc_v4_subnet
+ - result.vultr_vpc.v4_subnet_mask == vultr_vpc_v4_subnet_mask
+
+- name: test destroy vpc having 2 vpcs with same description distinqush region
+ vultr.cloud.vpc:
+ description: "{{ vultr_vpc_description }}"
+ state: absent
+ register: result
+ ignore_errors: true
+ check_mode: true
+- name: verify test destroy vpc having 2 vpcs with same description distinqush region
+ ansible.builtin.assert:
+ that:
+ - result is failed
+
- name: test destroy vpc in check mode
vultr.cloud.vpc:
description: "{{ vultr_vpc_description }}"
+ region: "{{ vultr_vpc_region }}"
state: absent
register: result
check_mode: true
@@ -90,6 +119,7 @@
- name: test destroy vpc
vultr.cloud.vpc:
description: "{{ vultr_vpc_description }}"
+ region: "{{ vultr_vpc_region }}"
state: absent
register: result
- name: verify test destroy vpc
@@ -104,9 +134,21 @@
- name: test destroy an existing vpc idempotence
vultr.cloud.vpc:
description: "{{ vultr_vpc_description }}"
+ region: "{{ vultr_vpc_region }}"
state: absent
register: result
- name: verify test destroy an existing vpc idempotence
ansible.builtin.assert:
that:
- result is not changed
+
+- name: cleanup vpc in diff region
+ vultr.cloud.vpc:
+ description: "{{ vultr_vpc_description }}"
+ region: "{{ vultr_vpc_region_2 }}"
+ state: absent
+ register: result
+- name: verify test cleanup vpc in diff region
+ ansible.builtin.assert:
+ that:
+ - result is changed
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/vpc2/aliases b/ansible_collections/vultr/cloud/tests/integration/targets/vpc2/aliases
new file mode 100644
index 000000000..c749ce7ca
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/vpc2/aliases
@@ -0,0 +1,3 @@
+cloud/vultr
+needs/target/common
+needs/target/cleanup
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/vpc2/defaults/main.yml b/ansible_collections/vultr/cloud/tests/integration/targets/vpc2/defaults/main.yml
new file mode 100644
index 000000000..0a5d68330
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/vpc2/defaults/main.yml
@@ -0,0 +1,5 @@
+---
+vultr_vpc2_description: "{{ vultr_resource_prefix }}_vpc2"
+vultr_vpc2_subnet: 192.168.42.0
+vultr_vpc2_cidr: 24
+vultr_vpc2_region: ewr
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/vpc2/meta/main.yml b/ansible_collections/vultr/cloud/tests/integration/targets/vpc2/meta/main.yml
new file mode 100644
index 000000000..2083f0e12
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/vpc2/meta/main.yml
@@ -0,0 +1,3 @@
+---
+dependencies:
+ - common
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/vpc2/tasks/main.yml b/ansible_collections/vultr/cloud/tests/integration/targets/vpc2/tasks/main.yml
new file mode 100644
index 000000000..df0dcb3b0
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/vpc2/tasks/main.yml
@@ -0,0 +1,7 @@
+---
+- block:
+ - ansible.builtin.import_tasks: tests.yml
+ always:
+ - ansible.builtin.import_role:
+ name: cleanup
+ tasks_from: cleanup_vpc2
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/vpc2/tasks/tests.yml b/ansible_collections/vultr/cloud/tests/integration/targets/vpc2/tasks/tests.yml
new file mode 100644
index 000000000..5a3bb60bf
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/vpc2/tasks/tests.yml
@@ -0,0 +1,112 @@
+# Copyright (c) 2023, René Moser <mail@renemoser.net>
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+---
+- name: setup
+ vultr.cloud.vpc2:
+ description: "{{ vultr_vpc2_description }}"
+ state: absent
+
+- name: test fail if missing description
+ vultr.cloud.vpc2:
+ register: result
+ ignore_errors: true
+- name: verify test fail if missing description
+ ansible.builtin.assert:
+ that:
+ - result is failed
+ - 'result.msg == "missing required arguments: description"'
+
+- name: test fail if missing params for state=present
+ vultr.cloud.vpc2:
+ description: "{{ vultr_vpc2_description }}"
+ register: result
+ ignore_errors: true
+- name: verify fail if missing params for state=present
+ ansible.builtin.assert:
+ that:
+ - result is failed
+ - '"state is present but all of the following are missing:" in result.msg'
+
+- name: test create vpc2 in check mode
+ vultr.cloud.vpc2:
+ description: "{{ vultr_vpc2_description }}"
+ ip_block: "{{ vultr_vpc2_subnet }}"
+ prefix_length: "{{ vultr_vpc2_cidr }}"
+ region: "{{ vultr_vpc2_region }}"
+ register: result
+ check_mode: true
+- name: verify test create server in check mode
+ ansible.builtin.assert:
+ that:
+ - result is changed
+
+- name: test create vpc
+ vultr.cloud.vpc2:
+ description: "{{ vultr_vpc2_description }}"
+ ip_block: "{{ vultr_vpc2_subnet }}"
+ prefix_length: "{{ vultr_vpc2_cidr }}"
+ region: "{{ vultr_vpc2_region }}"
+ register: result
+- name: verify test create vpc
+ ansible.builtin.assert:
+ that:
+ - result is changed
+ - result.vultr_vpc2.description == vultr_vpc2_description
+ - result.vultr_vpc2.region == vultr_vpc2_region
+ - result.vultr_vpc2.ip_block == vultr_vpc2_subnet
+ - result.vultr_vpc2.prefix_length == vultr_vpc2_cidr
+
+- name: test create vpc2 idempotence
+ vultr.cloud.vpc2:
+ description: "{{ vultr_vpc2_description }}"
+ ip_block: "{{ vultr_vpc2_subnet }}"
+ prefix_length: "{{ vultr_vpc2_cidr }}"
+ region: "{{ vultr_vpc2_region }}"
+ register: result
+- name: verify test vpc2 idempotence
+ ansible.builtin.assert:
+ that:
+ - result is not changed
+ - result.vultr_vpc2.description == vultr_vpc2_description
+ - result.vultr_vpc2.region == vultr_vpc2_region
+ - result.vultr_vpc2.ip_block == vultr_vpc2_subnet
+ - result.vultr_vpc2.prefix_length == vultr_vpc2_cidr
+
+- name: test destroy vpc2 in check mode
+ vultr.cloud.vpc2:
+ description: "{{ vultr_vpc2_description }}"
+ state: absent
+ register: result
+ check_mode: true
+- name: verify test destroy vpc2 in check mode
+ ansible.builtin.assert:
+ that:
+ - result is changed
+ - result.vultr_vpc2.description == vultr_vpc2_description
+ - result.vultr_vpc2.region == vultr_vpc2_region
+ - result.vultr_vpc2.ip_block == vultr_vpc2_subnet
+ - result.vultr_vpc2.prefix_length == vultr_vpc2_cidr
+
+- name: test destroy vpc
+ vultr.cloud.vpc2:
+ description: "{{ vultr_vpc2_description }}"
+ state: absent
+ register: result
+- name: verify test destroy vpc
+ ansible.builtin.assert:
+ that:
+ - result is changed
+ - result.vultr_vpc2.description == vultr_vpc2_description
+ - result.vultr_vpc2.region == vultr_vpc2_region
+ - result.vultr_vpc2.ip_block == vultr_vpc2_subnet
+ - result.vultr_vpc2.prefix_length == vultr_vpc2_cidr
+
+- name: test destroy an existing vpc2 idempotence
+ vultr.cloud.vpc2:
+ description: "{{ vultr_vpc2_description }}"
+ state: absent
+ register: result
+- name: verify test destroy an existing vpc2 idempotence
+ ansible.builtin.assert:
+ that:
+ - result is not changed
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/vpc2_info/aliases b/ansible_collections/vultr/cloud/tests/integration/targets/vpc2_info/aliases
new file mode 100644
index 000000000..c749ce7ca
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/vpc2_info/aliases
@@ -0,0 +1,3 @@
+cloud/vultr
+needs/target/common
+needs/target/cleanup
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/vpc2_info/defaults/main.yml b/ansible_collections/vultr/cloud/tests/integration/targets/vpc2_info/defaults/main.yml
new file mode 100644
index 000000000..2fb56613c
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/vpc2_info/defaults/main.yml
@@ -0,0 +1,5 @@
+---
+vultr_vpc2_description: "{{ vultr_resource_prefix }}_vpc2_info"
+vultr_vpc2_subnet: 192.168.23.0
+vultr_vpc2_cidr: 24
+vultr_vpc2_region: ewr
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/vpc2_info/meta/main.yml b/ansible_collections/vultr/cloud/tests/integration/targets/vpc2_info/meta/main.yml
new file mode 100644
index 000000000..2083f0e12
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/vpc2_info/meta/main.yml
@@ -0,0 +1,3 @@
+---
+dependencies:
+ - common
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/vpc2_info/tasks/main.yml b/ansible_collections/vultr/cloud/tests/integration/targets/vpc2_info/tasks/main.yml
new file mode 100644
index 000000000..df0dcb3b0
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/vpc2_info/tasks/main.yml
@@ -0,0 +1,7 @@
+---
+- block:
+ - ansible.builtin.import_tasks: tests.yml
+ always:
+ - ansible.builtin.import_role:
+ name: cleanup
+ tasks_from: cleanup_vpc2
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/vpc2_info/tasks/tests.yml b/ansible_collections/vultr/cloud/tests/integration/targets/vpc2_info/tasks/tests.yml
new file mode 100644
index 000000000..78acf473a
--- /dev/null
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/vpc2_info/tasks/tests.yml
@@ -0,0 +1,36 @@
+# Copyright (c) 2023, René Moser <mail@renemoser.net>
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+---
+- name: test gather vpc2 info - empty resources
+ vultr.cloud.vpc2_info:
+
+- name: Create the vpc2
+ vultr.cloud.vpc2:
+ description: "{{ vultr_vpc2_description }}"
+ ip_block: "{{ vultr_vpc2_subnet }}"
+ prefix_length: "{{ vultr_vpc2_cidr }}"
+ region: "{{ vultr_vpc2_region }}"
+
+- name: test gather vpc2 info in check mode
+ vultr.cloud.vpc2_info:
+ check_mode: true
+ register: result
+
+- name: verify test gather vultr vpc2 info in check mode
+ ansible.builtin.assert:
+ that:
+ - result.vultr_vpc2_info|selectattr('description','equalto',vultr_vpc2_description) | list | count == 1
+
+- name: test gather vpc2 info
+ vultr.cloud.vpc2_info:
+ register: result
+
+- name: verify test gather vultr vpc2 info
+ ansible.builtin.assert:
+ that:
+ - result.vultr_vpc2_info|selectattr('description','equalto',vultr_vpc2_description) | list | count == 1
+
+- name: delete the vpc2
+ vultr.cloud.vpc2:
+ name: "{{ vultr_vpc2_description }}"
+ state: absent
diff --git a/ansible_collections/vultr/cloud/tests/integration/targets/vpc_info/tasks/tests.yml b/ansible_collections/vultr/cloud/tests/integration/targets/vpc_info/tasks/tests.yml
index a8ab3d857..564b885e6 100644
--- a/ansible_collections/vultr/cloud/tests/integration/targets/vpc_info/tasks/tests.yml
+++ b/ansible_collections/vultr/cloud/tests/integration/targets/vpc_info/tasks/tests.yml
@@ -19,7 +19,7 @@
- name: verify test gather vultr vpc info in check mode
ansible.builtin.assert:
that:
- - result.vultr_vpc_info|selectattr('description','equalto','{{ vultr_vpc_description }}') | list | count == 1
+ - result.vultr_vpc_info|selectattr('description','equalto',vultr_vpc_description) | list | count == 1
- name: test gather VPC info
vultr.cloud.vpc_info:
@@ -28,7 +28,7 @@
- name: verify test gather vultr vpc info
ansible.builtin.assert:
that:
- - result.vultr_vpc_info|selectattr('description','equalto','{{ vultr_vpc_description }}') | list | count == 1
+ - result.vultr_vpc_info|selectattr('description','equalto',vultr_vpc_description) | list | count == 1
- name: Delete the VPC
vultr.cloud.vpc:
diff --git a/ansible_collections/vultr/cloud/tests/unit/plugins/inventory/test_vultr.py b/ansible_collections/vultr/cloud/tests/unit/plugins/inventory/test_vultr.py
index aa8d8fbce..071bf50da 100644
--- a/ansible_collections/vultr/cloud/tests/unit/plugins/inventory/test_vultr.py
+++ b/ansible_collections/vultr/cloud/tests/unit/plugins/inventory/test_vultr.py
@@ -4,23 +4,22 @@ __metaclass__ = type
import json
import os.path
-import pytest
+import ansible_collections.vultr.cloud.plugins.inventory.vultr as module_under_test
+import pytest
from ansible.errors import AnsibleError, AnsibleParserError
from ansible.inventory.data import InventoryData
from ansible.parsing.dataloader import DataLoader
from ansible.template import Templar
-
-import ansible_collections.vultr.cloud.plugins.inventory.vultr as module_under_test
-from ansible_collections.vultr.cloud.plugins.inventory.vultr import InventoryModule
-
+from ansible_collections.vultr.cloud.plugins.inventory.vultr import \
+ InventoryModule
default_options = {
"api_endpoint": "https://test.api.vultr.com/v2",
"api_key": "TEST_VULTR_API_KEY",
"api_results_per_page": 100,
"api_timeout": 60,
- "attributes": ["id", "region", "label", "plan", "hostname", "main_ip"],
+ "attributes": ["id", "region", "label", "plan", "hostname", "main_ip", "tags", "internal_ip"],
"filters": [],
"plugin": "vultr.cloud.vultr",
"variable_prefix": "vultr_",