Skip to content

Commit 1ca8843

Browse files
TPT-4111 Add support for region_vpc_availability_info module
1 parent ff57ecb commit 1ca8843

7 files changed

Lines changed: 142 additions & 4 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ Name | Description |
9595
[linode.cloud.placement_group_info](./docs/modules/placement_group_info.md)|Get info about a Linode Placement Group.|
9696
[linode.cloud.profile_info](./docs/modules/profile_info.md)|Get info about a Linode Profile.|
9797
[linode.cloud.region_info](./docs/modules/region_info.md)|Get info about a Linode Region.|
98+
[linode.cloud.region_vpc_availability_info](./docs/modules/region_vpc_availability_info.md)|Get info about a Linode Region VPC Availability.|
9899
[linode.cloud.ssh_key_info](./docs/modules/ssh_key_info.md)|Get info about a Linode SSH Key.|
99100
[linode.cloud.stackscript_info](./docs/modules/stackscript_info.md)|Get info about a Linode StackScript.|
100101
[linode.cloud.token_info](./docs/modules/token_info.md)|Get info about a Linode Personal Access Token.|
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# region_vpc_availability_info
2+
3+
Get info about a Linode Region VPC Availability.
4+
5+
WARNING! This module makes use of beta endpoints and requires the C(api_version) field be explicitly set to C(v4beta).
6+
7+
- [Minimum Required Fields](#minimum-required-fields)
8+
- [Examples](#examples)
9+
- [Parameters](#parameters)
10+
- [Return Values](#return-values)
11+
12+
## Minimum Required Fields
13+
| Field | Type | Required | Description |
14+
|-------------|-------|--------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
15+
| `api_token` | `str` | **Required** | The Linode account personal access token. It is necessary to run the module. <br/>It can be exposed by the environment variable `LINODE_API_TOKEN` instead. <br/>See details in [Usage](https://github.com/linode/ansible_linode?tab=readme-ov-file#usage). |
16+
17+
## Examples
18+
19+
```yaml
20+
- name: Get Info of a Linode Region VPC Availability
21+
linode.cloud.region_vpc_availability_info:
22+
id: us-mia
23+
```
24+
25+
26+
## Parameters
27+
28+
| Field | Type | Required | Description |
29+
|-----------|------|----------|------------------------------------------------------------------------------|
30+
| `id` | <center>`str`</center> | <center>**Required**</center> | The ID of the Region VPC Availability to resolve. |
31+
32+
## Return Values
33+
34+
- `region_vpc_availability` - The returned Region VPC Availability.
35+
36+
- Sample Response:
37+
```json
38+
{
39+
"region": "us-mia",
40+
"available": true,
41+
"available_ipv6_prefix_lengths": [
42+
48,
43+
52
44+
]
45+
}
46+
```
47+
- See the [Linode API response documentation](https://techdocs.akamai.com/linode-api/reference/get-region-vpc-availability) for a list of returned fields
48+
49+

docs/modules/regions_vpc_availability_list.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ WARNING! This module makes use of beta endpoints and requires the C(api_version)
3535

3636
| Field | Type | Required | Description |
3737
|-----------|------|----------|------------------------------------------------------------------------------|
38-
| `name` | <center>`str`</center> | <center>**Required**</center> | The name of the field to filter on. Valid filterable fields can be found [here](TODO). |
38+
| `name` | <center>`str`</center> | <center>**Required**</center> | The name of the field to filter on. Valid filterable fields can be found [here](https://techdocs.akamai.com/linode-api/reference/get-regions-vpc-availability). |
3939
| `values` | <center>`list`</center> | <center>**Required**</center> | A list of values to allow for this field. Fields will pass this filter if at least one of these values matches. |
4040

4141
## Return Values
@@ -71,6 +71,6 @@ WARNING! This module makes use of beta endpoints and requires the C(api_version)
7171
}
7272
]
7373
```
74-
- See the [Linode API response documentation](TODO) for a list of returned fields
74+
- See the [Linode API response documentation](https://techdocs.akamai.com/linode-api/reference/get-regions-vpc-availability) for a list of returned fields
7575

7676

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"""Documentation fragments for the region_vpc_availability_info module"""
2+
3+
specdoc_examples = ['''
4+
- name: Get Info of a Linode Region VPC Availability
5+
linode.cloud.region_vpc_availability_info:
6+
id: us-mia''']
7+
8+
result_region_vpc_availability_samples = ['''{
9+
"region": "us-mia",
10+
"available": true,
11+
"available_ipv6_prefix_lengths": [
12+
48,
13+
52
14+
]
15+
}''']
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#!/usr/bin/python
2+
# -*- coding: utf-8 -*-
3+
4+
"""This module allows users to retrieve information about a Linode Region VPC Availability."""
5+
6+
from __future__ import absolute_import, division, print_function
7+
8+
from ansible_collections.linode.cloud.plugins.module_utils.doc_fragments import (
9+
region_vpc_availability_info as docs,
10+
)
11+
from ansible_collections.linode.cloud.plugins.module_utils.linode_common_info import (
12+
InfoModule,
13+
InfoModuleAttr,
14+
InfoModuleResult,
15+
)
16+
from ansible_specdoc.objects import FieldType
17+
from linode_api4 import Region
18+
19+
module = InfoModule(
20+
examples=docs.specdoc_examples,
21+
primary_result=InfoModuleResult(
22+
display_name="Region VPC Availability",
23+
field_name="region_vpc_availability",
24+
field_type=FieldType.dict,
25+
docs_url="https://techdocs.akamai.com/linode-api/reference/get-region-vpc-availability",
26+
samples=docs.result_region_vpc_availability_samples,
27+
),
28+
attributes=[
29+
InfoModuleAttr(
30+
name="id",
31+
display_name="ID",
32+
type=FieldType.string,
33+
get=lambda client, params: client.load(
34+
Region, params.get("id")
35+
).vpc_availability.dict,
36+
),
37+
],
38+
requires_beta=True,
39+
)
40+
41+
SPECDOC_META = module.spec
42+
43+
DOCUMENTATION = r"""
44+
"""
45+
EXAMPLES = r"""
46+
"""
47+
RETURN = r"""
48+
"""
49+
50+
if __name__ == "__main__":
51+
module.run()

plugins/modules/regions_vpc_availability_list.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55

66
from __future__ import absolute_import, division, print_function
77

8-
import ansible_collections.linode.cloud.plugins.module_utils.doc_fragments.regions_vpc_availability_list as docs
8+
from ansible_collections.linode.cloud.plugins.module_utils.doc_fragments import (
9+
regions_vpc_availability_list as docs,
10+
)
911
from ansible_collections.linode.cloud.plugins.module_utils.linode_common_list import (
1012
ListModule,
1113
)
@@ -14,7 +16,7 @@
1416
result_display_name="Regions VPC Availability",
1517
result_field_name="regions_vpc_availability",
1618
endpoint_template="/regions/vpc-availability",
17-
result_docs_url="TODO",
19+
result_docs_url="https://techdocs.akamai.com/linode-api/reference/get-regions-vpc-availability",
1820
requires_beta=True,
1921
examples=docs.specdoc_examples,
2022
result_samples=docs.result_regions_vpc_availability_samples,
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
- name: region_vpc_availability_info
2+
block:
3+
- name: Get Info of a Linode Region VPC Availability
4+
linode.cloud.region_vpc_availability_info:
5+
id: us-mia
6+
register: result
7+
8+
- name: Assert region_vpc_availability_info
9+
assert:
10+
that:
11+
- result.region_vpc_availability.region == 'us-mia'
12+
- result.region_vpc_availability.available == true
13+
- result.region_vpc_availability.available_ipv6_prefix_lengths == [48, 52]
14+
15+
environment:
16+
LINODE_UA_PREFIX: '{{ ua_prefix }}'
17+
LINODE_API_TOKEN: '{{ api_token }}'
18+
LINODE_API_URL: '{{ api_url }}'
19+
LINODE_API_VERSION: '{{ api_version }}'
20+
LINODE_CA: '{{ ca_file or "" }}'

0 commit comments

Comments
 (0)