scaleway: Refactor modules

This commit is contained in:
Rémy Léone 2018-08-20 10:50:28 +02:00 committed by Michael Scherer
parent 29cfebe332
commit 8f9d55529d
13 changed files with 544 additions and 652 deletions

View file

@ -25,6 +25,8 @@ version_added: "2.6"
author: Remy Leone (@sieben)
description:
- "This module manages compute instances on Scaleway."
extends_documentation_fragment: scaleway
options:
enable_ipv6:
@ -64,11 +66,6 @@ options:
required: false
default: []
oauth_token:
description:
- Scaleway OAuth token.
required: true
region:
description:
- Scaleway compute zone
@ -104,12 +101,6 @@ options:
- X64-60GB
- X64-120GB
timeout:
description:
- Timeout for API calls
required: false
default: 30
wait:
description:
- Wait for the instance to reach its desired state before returning.
@ -159,9 +150,8 @@ import datetime
import time
from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.basic import env_fallback
from ansible.module_utils.six.moves.urllib.parse import quote as urlquote
from ansible.module_utils.scaleway import ScalewayAPI, SCALEWAY_LOCATION
from ansible.module_utils.scaleway import SCALEWAY_LOCATION, scaleway_argument_spec, Scaleway
SCALEWAY_COMMERCIAL_TYPES = [
@ -573,7 +563,6 @@ def server_change_attributes(compute_api, target_server, wished_server):
def core(module):
api_token = module.params['oauth_token']
region = module.params["region"]
wished_server = {
"state": module.params["state"],
@ -584,37 +573,31 @@ def core(module):
"tags": module.params["tags"],
"organization": module.params["organization"]
}
module.params['api_url'] = SCALEWAY_LOCATION[region]["api_endpoint"]
compute_api = ScalewayAPI(module=module,
headers={'X-Auth-Token': api_token},
base_url=SCALEWAY_LOCATION[region]["api_endpoint"])
compute_api = Scaleway(module=module)
changed, summary = state_strategy[wished_server["state"]](compute_api=compute_api, wished_server=wished_server)
module.exit_json(changed=changed, msg=summary)
def main():
argument_spec = scaleway_argument_spec()
argument_spec.update(dict(
image=dict(required=True),
name=dict(),
region=dict(required=True, choices=SCALEWAY_LOCATION.keys()),
commercial_type=dict(required=True, choices=SCALEWAY_COMMERCIAL_TYPES),
enable_ipv6=dict(default=False, type="bool"),
state=dict(choices=state_strategy.keys(), default='present'),
tags=dict(type="list", default=[]),
organization=dict(required=True),
wait=dict(type="bool", default=False),
wait_timeout=dict(type="int", default=300),
wait_sleep_time=dict(type="int", default=3),
))
module = AnsibleModule(
argument_spec=dict(
oauth_token=dict(
no_log=True,
# Support environment variable for Scaleway OAuth Token
fallback=(env_fallback, ['SCW_TOKEN', 'SCW_API_KEY', 'SCW_OAUTH_TOKEN']),
required=True,
),
image=dict(required=True),
name=dict(),
region=dict(required=True, choices=SCALEWAY_LOCATION.keys()),
commercial_type=dict(required=True, choices=SCALEWAY_COMMERCIAL_TYPES),
enable_ipv6=dict(default=False, type="bool"),
state=dict(choices=state_strategy.keys(), default='present'),
tags=dict(type="list", default=[]),
organization=dict(required=True),
timeout=dict(type="int", default=30),
wait=dict(type="bool", default=False),
wait_timeout=dict(type="int", default=300),
wait_sleep_time=dict(type="int", default=3),
),
argument_spec=argument_spec,
supports_check_mode=True,
)