Skip to content

Commit c1f3691

Browse files
authored
Merge pull request #6 from merizrizal/5-add-statemodify-into-vm-module
Add state of active, inactive, and resize into the VM module
2 parents 2f0d696 + 09f757b commit c1f3691

File tree

4 files changed

+240
-45
lines changed

4 files changed

+240
-45
lines changed

README.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,30 @@ Example of using the VM module.
6767
# Since the default value of state is set to present, we may exclude the state below
6868
state: present
6969
70+
- name: Resize VM
71+
merizrizal.idcloudhost.vm:
72+
api_key: "{{ your_api_key }}"
73+
location: jkt02
74+
name: "{{ your_desired_vm_name }}"
75+
disks: 40
76+
vcpu: 4
77+
ram: 4096
78+
state: resize
79+
80+
- name: Power on the VM
81+
merizrizal.idcloudhost.vm:
82+
api_key: "{{ your_api_key }}"
83+
location: jkt02
84+
name: "{{ your_desired_vm_name }}"
85+
state: active
86+
87+
- name: Power off the VM
88+
merizrizal.idcloudhost.vm:
89+
api_key: "{{ your_api_key }}"
90+
location: jkt02
91+
name: "{{ your_desired_vm_name }}"
92+
state: inactive
93+
7094
- name: Delete VM resource
7195
merizrizal.idcloudhost.vm:
7296
api_key: "{{ your_api_key }}"

merizrizal/idcloudhost/plugins/module_utils/base.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ def __init__(self):
1717

1818
self._module: AnsibleModule = None
1919

20+
global requests
21+
requests = self._ensure_requests()
22+
2023
def _ensure_requests(self):
2124
try:
2225
import requests
@@ -33,14 +36,18 @@ def _ensure_requests(self):
3336
results=[]
3437
)
3538

36-
def _get_existing_network(self, name) -> dict:
37-
url = f'{self._base_url}/{self._location}/network/networks'
39+
def _init_url(self, endpoint_url=None) -> tuple[str, dict]:
40+
endpoint_url_result = self._endpoint_url if endpoint_url is None else endpoint_url
41+
url = f'{self._base_url}/{self._location}/{endpoint_url_result}'
3842
url_headers = dict(
3943
apikey=self._api_key
4044
)
4145

42-
global requests
43-
requests = self._ensure_requests()
46+
return url, url_headers
47+
48+
def _get_existing_network(self, name) -> dict:
49+
url, url_headers = self._init_url('network/networks')
50+
4451
response = requests.request('GET', url, headers=url_headers, timeout=360)
4552
data = response.json()
4653

@@ -59,13 +66,8 @@ def _get_existing_network(self, name) -> dict:
5966
return dict()
6067

6168
def _get_public_ipv4(self, vm_uuid=None, private_ipv4=None) -> dict:
62-
url = f'{self._base_url}/{self._location}/network/ip_addresses'
63-
url_headers = dict(
64-
apikey=self._api_key
65-
)
69+
url, url_headers = self._init_url('network/ip_addresses')
6670

67-
global requests
68-
requests = self._ensure_requests()
6971
response = requests.request('GET', url, headers=url_headers, timeout=360)
7072
data = response.json()
7173

merizrizal/idcloudhost/plugins/modules/network.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -119,10 +119,7 @@ def main(self):
119119
if 'uuid' in network:
120120
network.update(changed=False)
121121
else:
122-
url = f'{self._base_url}/{self._location}/{self._endpoint_url}?name={self._name}'
123-
url_headers = dict(
124-
apikey=self._api_key
125-
)
122+
url, url_headers = self._init_url(f'{self._endpoint_url}?name={self._name}')
126123

127124
response = requests.request('POST', url, headers=url_headers, timeout=360)
128125
data = response.json()
@@ -144,18 +141,15 @@ def main(self):
144141
elif self._state == 'absent':
145142
if 'uuid' in network:
146143
uuid = network['uuid']
147-
url = f'{self._base_url}/{self._location}/{self._endpoint_url}/{uuid}'
148-
url_headers = dict(
149-
apikey=self._api_key
150-
)
144+
url, url_headers = self._init_url(f'{self._endpoint_url}/{uuid}')
151145

152146
response = requests.request('DELETE', url, headers=url_headers, timeout=360)
153147

154148
if response.status_code == 200:
155149
network.update(changed=True)
156150
else:
157151
result = dict(
158-
error='There was a problem with the request.'
152+
error=response.json()
159153
)
160154

161155
module.fail_json(msg='Failed to delete the VPC network.', **result)

0 commit comments

Comments
 (0)