|
|
|
@ -104,6 +104,12 @@ options:
|
|
|
|
|
- The path to the file which has to be uploaded, mutually exclusive with copy_from
|
|
|
|
|
required: false
|
|
|
|
|
default: None
|
|
|
|
|
endpoint_type:
|
|
|
|
|
description:
|
|
|
|
|
- endpoint URL type
|
|
|
|
|
choices: [publicURL, internalURL]
|
|
|
|
|
required: false
|
|
|
|
|
default: publicURL
|
|
|
|
|
requirements: ["glanceclient", "keystoneclient"]
|
|
|
|
|
|
|
|
|
|
'''
|
|
|
|
@ -127,6 +133,7 @@ try:
|
|
|
|
|
except ImportError:
|
|
|
|
|
print("failed=True msg='glanceclient and keystone client are required'")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _get_ksclient(module, kwargs):
|
|
|
|
|
try:
|
|
|
|
|
client = ksclient.Client(username=kwargs.get('login_username'),
|
|
|
|
@ -138,17 +145,18 @@ def _get_ksclient(module, kwargs):
|
|
|
|
|
return client
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _get_endpoint(module, client):
|
|
|
|
|
def _get_endpoint(module, client, endpoint_type):
|
|
|
|
|
try:
|
|
|
|
|
endpoint = client.service_catalog.url_for(service_type='image', endpoint_type='publicURL')
|
|
|
|
|
endpoint = client.service_catalog.url_for(service_type='image', endpoint_type=endpoint_type)
|
|
|
|
|
except Exception, e:
|
|
|
|
|
module.fail_json(msg="Error getting endpoint for glance: %s" % e.message)
|
|
|
|
|
return endpoint
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _get_glance_client(module, kwargs):
|
|
|
|
|
_ksclient = _get_ksclient(module, kwargs)
|
|
|
|
|
token = _ksclient.auth_token
|
|
|
|
|
endpoint =_get_endpoint(module, _ksclient)
|
|
|
|
|
endpoint =_get_endpoint(module, _ksclient, kwargs.get('endpoint_type'))
|
|
|
|
|
kwargs = {
|
|
|
|
|
'token': token,
|
|
|
|
|
}
|
|
|
|
@ -158,6 +166,7 @@ def _get_glance_client(module, kwargs):
|
|
|
|
|
module.fail_json(msg="Error in connecting to glance: %s" % e.message)
|
|
|
|
|
return client
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _glance_image_present(module, params, client):
|
|
|
|
|
try:
|
|
|
|
|
for image in client.images.list():
|
|
|
|
@ -167,6 +176,7 @@ def _glance_image_present(module, params, client):
|
|
|
|
|
except Exception, e:
|
|
|
|
|
module.fail_json(msg="Error in fetching image list: %s" % e.message)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _glance_image_create(module, params, client):
|
|
|
|
|
kwargs = {
|
|
|
|
|
'name': params.get('name'),
|
|
|
|
@ -194,6 +204,7 @@ def _glance_image_create(module, params, client):
|
|
|
|
|
else:
|
|
|
|
|
module.fail_json(msg=" The module timed out, please check manually " + image.status)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _glance_delete_image(module, params, client):
|
|
|
|
|
try:
|
|
|
|
|
for image in client.images.list():
|
|
|
|
@ -203,6 +214,7 @@ def _glance_delete_image(module, params, client):
|
|
|
|
|
module.fail_json(msg="Error in deleting image: %s" % e.message)
|
|
|
|
|
module.exit_json(changed=True, result="Deleted")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def main():
|
|
|
|
|
|
|
|
|
|
module = AnsibleModule(
|
|
|
|
@ -222,6 +234,7 @@ def main():
|
|
|
|
|
copy_from = dict(default= None),
|
|
|
|
|
timeout = dict(default=180),
|
|
|
|
|
file = dict(default=None),
|
|
|
|
|
endpoint_type = dict(default='publicURL', choices=['publicURL', 'internalURL']),
|
|
|
|
|
state = dict(default='present', choices=['absent', 'present'])
|
|
|
|
|
),
|
|
|
|
|
mutually_exclusive = [['file','copy_from']],
|
|
|
|
@ -246,4 +259,3 @@ def main():
|
|
|
|
|
# this is magic, see lib/ansible/module.params['common.py
|
|
|
|
|
from ansible.module_utils.basic import *
|
|
|
|
|
main()
|
|
|
|
|
|
|
|
|
|