Skip to content

Commit d347379

Browse files
authored
Add availability zone info module (#85)
1 parent 475b1f9 commit d347379

File tree

5 files changed

+113
-0
lines changed

5 files changed

+113
-0
lines changed

meta/runtime.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ action_groups:
66
- as_config_info
77
- as_group
88
- as_policy_info
9+
- availability_zone_info
910
- cce_cluster
1011
- cce_cluster_cert_info
1112
- cce_cluster_info
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
#!/usr/bin/python
2+
# Licensed under the Apache License, Version 2.0 (the "License");
3+
# you may not use this file except in compliance with the License.
4+
# You may obtain a copy of the License at
5+
#
6+
# http://www.apache.org/licenses/LICENSE-2.0
7+
#
8+
# Unless required by applicable law or agreed to in writing, software
9+
# distributed under the License is distributed on an "AS IS" BASIS,
10+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11+
# See the License for the specific language governing permissions and
12+
# limitations under the License.
13+
14+
DOCUMENTATION = '''
15+
---
16+
module: availability_zone_info
17+
short_description: Get AZ info
18+
extends_documentation_fragment: opentelekomcloud.cloud.otc
19+
version_added: "0.7.0"
20+
author: "Artem Goncharov (@gtema)"
21+
description:
22+
- Get AZ info.
23+
options:
24+
name:
25+
description: The name or ID of a AZ.
26+
type: str
27+
service:
28+
description:
29+
- Service name to list supported avaiability zones for.
30+
- Currently only compute is supported
31+
type: str
32+
default: compute
33+
requirements: ["openstacksdk"]
34+
'''
35+
36+
RETURN = '''
37+
availability_zone_info:
38+
description: List of Availability zones.
39+
type: complex
40+
returned: On Success.
41+
contains:
42+
name:
43+
description: Specifies the AZ name.
44+
type: str
45+
'''
46+
47+
EXAMPLES = '''
48+
# Get AZ.
49+
- opentelekomcloud.cloud.availability_zone_info:
50+
register: az
51+
'''
52+
53+
from ansible_collections.opentelekomcloud.cloud.plugins.module_utils.otc import OTCModule
54+
55+
56+
class AvailabilityZoneInfoModule(OTCModule):
57+
argument_spec = dict(
58+
name=dict(type='str', required=False),
59+
service=dict(type='str', default='compute')
60+
)
61+
62+
module_kwargs = dict(
63+
supports_check_mode=True
64+
)
65+
66+
def run(self):
67+
data = []
68+
69+
raw_data = []
70+
if self.params['service'] == 'compute':
71+
raw_data = self.conn.compute.availability_zones()
72+
if raw_data:
73+
for raw in raw_data:
74+
dt = raw.to_dict()
75+
dt.pop('location')
76+
data.append(dt)
77+
78+
self.exit(
79+
changed=False,
80+
availability_zones=data
81+
)
82+
83+
84+
def main():
85+
module = AvailabilityZoneInfoModule()
86+
module()
87+
88+
89+
if __name__ == '__main__':
90+
main()
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
- module_defaults:
3+
opentelekomcloud.cloud.availability_zone_info:
4+
cloud: "{{ test_cloud }}"
5+
block:
6+
- name: Get AZ info (check mode)
7+
opentelekomcloud.cloud.availability_zone_info:
8+
check_mode: yes
9+
register: az
10+
11+
- name: Get AZ info
12+
opentelekomcloud.cloud.availability_zone_info:
13+
register: az
14+
15+
- name: assert result
16+
assert:
17+
that:
18+
- az is success
19+
- az is not changed
20+
- az.availability_zones is defined

tests/sanity/ignore-2.10.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ plugins/modules/as_config_info.py validate-modules:missing-gplv3-license
33
plugins/modules/as_group.py validate-modules:missing-gplv3-license
44
plugins/modules/as_group_info.py validate-modules:missing-gplv3-license
55
plugins/modules/as_policy_info.py validate-modules:missing-gplv3-license
6+
plugins/modules/availability_zone_info.py validate-modules:missing-gplv3-license
67
plugins/modules/cce_cluster.py validate-modules:missing-gplv3-license
78
plugins/modules/cce_cluster_cert_info.py validate-modules:missing-gplv3-license
89
plugins/modules/cce_cluster_info.py validate-modules:missing-gplv3-license

tests/sanity/ignore-2.9.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ plugins/modules/as_config_info.py validate-modules:missing-gplv3-license
33
plugins/modules/as_group.py validate-modules:missing-gplv3-license
44
plugins/modules/as_group_info.py validate-modules:missing-gplv3-license
55
plugins/modules/as_policy_info.py validate-modules:missing-gplv3-license
6+
plugins/modules/availability_zone_info.py validate-modules:missing-gplv3-license
67
plugins/modules/cce_cluster.py validate-modules:missing-gplv3-license
78
plugins/modules/cce_cluster_node.py validate-modules:missing-gplv3-license
89
plugins/modules/cce_cluster_cert_info.py validate-modules:missing-gplv3-license

0 commit comments

Comments
 (0)