add image_id_to_name filter

This commit is contained in:
Miroslav Suchý 2015-03-23 16:04:11 +00:00
parent 98aafc387b
commit b4be4fe3d2

View file

@ -1,7 +1,11 @@
from ansible import errors, runner from ansible import errors, runner
import json from glanceclient import Client as GlanceClient
from keystoneclient import session
from keystoneclient.auth.identity import v2 as identity
from novaclient.v3.client import Client from novaclient.v3.client import Client
import novaclient.exceptions; import glanceclient.exc
import json
import novaclient.exceptions
def flavor_id_to_name(host_vars, user, password, tenant, auth_url): def flavor_id_to_name(host_vars, user, password, tenant, auth_url):
nt = Client(user, password, tenant, auth_url, service_type="compute") nt = Client(user, password, tenant, auth_url, service_type="compute")
@ -19,8 +23,21 @@ def flavor_name_to_id(host_vars, user, password, tenant, auth_url):
return i.id return i.id
raise errors.AnsibleFilterError('There is no flavor of id {0}'.format(host_vars)) raise errors.AnsibleFilterError('There is no flavor of id {0}'.format(host_vars))
def image_id_to_name(host_vars, user, password, tenant, auth_url):
auth = identity.Password(auth_url=auth_url, username=user,
password=password, tenant_name=tenant)
sess = session.Session(auth=auth)
token = auth.get_token(sess)
endpoint = auth.get_endpoint(sess, service_name='glance', service_type='image')
glance = GlanceClient('2', endpoint=endpoint, token=token)
try:
return glance.images.get(host_vars).name
except glanceclient.exc.HTTPNotFound:
raise errors.AnsibleFilterError('There is no image of id {0}'.format(host_vars))
class FilterModule (object): class FilterModule (object):
def filters(self): def filters(self):
return {"flavor_id_to_name": flavor_id_to_name, return {"flavor_id_to_name": flavor_id_to_name,
"flavor_name_to_id": flavor_name_to_id, "flavor_name_to_id": flavor_name_to_id,
"image_id_to_name": image_id_to_name,
} }