Merge "Rework nova_v2 driver"
This commit is contained in:
commit
936655eb37
@ -15,7 +15,6 @@ import time
|
|||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
from oslo_log import log
|
from oslo_log import log
|
||||||
|
|
||||||
from openstack.compute.v2 import server_ip
|
|
||||||
from openstack.compute.v2 import server_metadata
|
from openstack.compute.v2 import server_metadata
|
||||||
|
|
||||||
from senlin.common import exception
|
from senlin.common import exception
|
||||||
@ -39,62 +38,61 @@ class NovaClient(base.DriverBase):
|
|||||||
except sdk.exc.HttpException as ex:
|
except sdk.exc.HttpException as ex:
|
||||||
raise ex
|
raise ex
|
||||||
|
|
||||||
def flavor_get(self, **params):
|
def flavor_get(self, flavor_id):
|
||||||
try:
|
try:
|
||||||
return self.conn.compute.get_flavor(**params)
|
return self.conn.compute.get_flavor(flavor_id)
|
||||||
except sdk.exc.HttpException as ex:
|
except sdk.exc.HttpException as ex:
|
||||||
raise ex
|
raise ex
|
||||||
|
|
||||||
def flavor_get_by_name(self, name):
|
def flavor_get_by_name(self, flavor_name):
|
||||||
try:
|
try:
|
||||||
return self.conn.compute.find_flavor(name_or_id=name)
|
return self.conn.compute.find_flavor(flavor_name)
|
||||||
except sdk.exc.HttpException as ex:
|
except sdk.exc.HttpException as ex:
|
||||||
raise ex
|
raise ex
|
||||||
|
|
||||||
def flavor_list(self, details=False, **params):
|
def flavor_list(self, details=False, **query):
|
||||||
try:
|
try:
|
||||||
return self.conn.compute.list_flavors(details=details, **params)
|
return self.conn.compute.flavors(details=details, **query)
|
||||||
except sdk.exc.HttpException as ex:
|
except sdk.exc.HttpException as ex:
|
||||||
raise ex
|
raise ex
|
||||||
|
|
||||||
def flavor_update(self, flavor):
|
def flavor_update(self, flavor_id, **params):
|
||||||
# flavor here can be the ID of flavor or flavor class
|
|
||||||
try:
|
try:
|
||||||
return self.conn.compute.update_flavor(value=flavor)
|
return self.conn.compute.update_flavor(flavor_id, **params)
|
||||||
except sdk.exc.HttpException as ex:
|
except sdk.exc.HttpException as ex:
|
||||||
raise ex
|
raise ex
|
||||||
|
|
||||||
def flavor_delete(self, **params):
|
def flavor_delete(self, flavor_id):
|
||||||
try:
|
try:
|
||||||
self.conn.compute.delete_flavor(**params)
|
self.conn.compute.delete_flavor(flavor_id, ignore_missing=True)
|
||||||
except sdk.exc.HttpException as ex:
|
except sdk.exc.HttpException as ex:
|
||||||
sdk.ignore_not_found(ex)
|
raise ex
|
||||||
|
|
||||||
def image_create(self, **params):
|
def image_create(self, **params):
|
||||||
raise NotImplemented
|
raise NotImplemented
|
||||||
|
|
||||||
def image_get(self, **params):
|
def image_get(self, image_id):
|
||||||
try:
|
try:
|
||||||
return self.conn.compute.get_image(**params)
|
return self.conn.compute.get_image(image_id)
|
||||||
except sdk.exc.HttpException as ex:
|
except sdk.exc.HttpException as ex:
|
||||||
raise ex
|
raise ex
|
||||||
|
|
||||||
def image_get_by_name(self, name):
|
def image_get_by_name(self, image_name):
|
||||||
try:
|
try:
|
||||||
return self.conn.compute.find_image(name_or_id=name)
|
return self.conn.compute.find_image(image_name)
|
||||||
except sdk.exc.HttpException as ex:
|
except sdk.exc.HttpException as ex:
|
||||||
raise ex
|
raise ex
|
||||||
|
|
||||||
def image_list(self, details=False):
|
def image_list(self, details=False, **query):
|
||||||
try:
|
try:
|
||||||
return self.conn.compute.list_images(details=details)
|
return self.conn.compute.images(details=details, **query)
|
||||||
except sdk.exc.HttpException as ex:
|
except sdk.exc.HttpException as ex:
|
||||||
raise ex
|
raise ex
|
||||||
|
|
||||||
def image_delete(self, image):
|
def image_delete(self, image_id):
|
||||||
# image here can be a ID of image or a image class
|
|
||||||
try:
|
try:
|
||||||
return self.conn.compute.delete_image(value=image)
|
return self.conn.compute.delete_image(image_id,
|
||||||
|
ignore_missing=True)
|
||||||
except sdk.exc.HttpException as ex:
|
except sdk.exc.HttpException as ex:
|
||||||
raise ex
|
raise ex
|
||||||
|
|
||||||
@ -104,30 +102,35 @@ class NovaClient(base.DriverBase):
|
|||||||
except sdk.exc.HttpException as ex:
|
except sdk.exc.HttpException as ex:
|
||||||
raise ex
|
raise ex
|
||||||
|
|
||||||
def keypair_get(self, **params):
|
def keypair_get(self, keypair_id):
|
||||||
try:
|
try:
|
||||||
return self.conn.compute.get_keypair(**params)
|
return self.conn.compute.get_keypair(keypair_id)
|
||||||
except sdk.exc.HttpException as ex:
|
except sdk.exc.HttpException as ex:
|
||||||
raise ex
|
raise ex
|
||||||
|
|
||||||
def keypair_list(self, **params):
|
def keypair_get_by_name(self, keypair_name):
|
||||||
try:
|
try:
|
||||||
return self.conn.compute.list_keypairs(**params)
|
return self.conn.compute.find_keypair(keypair_name)
|
||||||
except sdk.exc.HttpException as ex:
|
except sdk.exc.HttpException as ex:
|
||||||
raise ex
|
raise ex
|
||||||
|
|
||||||
def keypair_update(self, **params):
|
def keypair_list(self, details=False, **query):
|
||||||
try:
|
try:
|
||||||
return self.conn.compute.update_keypair(**params)
|
return self.conn.compute.keypairs(details=details, **query)
|
||||||
except sdk.exc.HttpException as ex:
|
except sdk.exc.HttpException as ex:
|
||||||
raise ex
|
raise ex
|
||||||
|
|
||||||
def keypair_delete(self, keypair):
|
def keypair_update(self, keypair_id, **params):
|
||||||
# keypair here can be the ID of keypair or a keypair class
|
|
||||||
try:
|
try:
|
||||||
self.conn.compute.delete_keypair(value=keypair)
|
return self.conn.compute.update_keypair(keypair_id, **params)
|
||||||
except sdk.exc.HttpException as ex:
|
except sdk.exc.HttpException as ex:
|
||||||
sdk.ignore_not_found(ex)
|
raise ex
|
||||||
|
|
||||||
|
def keypair_delete(self, keypair_id):
|
||||||
|
try:
|
||||||
|
self.conn.compute.delete_keypair(keypair_id, ignore_missing=True)
|
||||||
|
except sdk.exc.HttpException as ex:
|
||||||
|
raise ex
|
||||||
|
|
||||||
def server_create(self, **params):
|
def server_create(self, **params):
|
||||||
timeout = cfg.CONF.default_action_timeout
|
timeout = cfg.CONF.default_action_timeout
|
||||||
@ -141,9 +144,7 @@ class NovaClient(base.DriverBase):
|
|||||||
raise ex
|
raise ex
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# wait for new version of openstacksdk to fix this,
|
self.conn.compute.wait_for_server(server_obj, wait=timeout)
|
||||||
# then use self.conn.compute.wait_for_status() instead
|
|
||||||
server_obj.wait_for_status(self.session, wait=timeout)
|
|
||||||
except sdk.exc.ResourceFailure as ex:
|
except sdk.exc.ResourceFailure as ex:
|
||||||
raise exception.ProfileOperationFailed(ex.message)
|
raise exception.ProfileOperationFailed(ex.message)
|
||||||
except sdk.exc.ResourceTimeout as ex:
|
except sdk.exc.ResourceTimeout as ex:
|
||||||
@ -151,39 +152,36 @@ class NovaClient(base.DriverBase):
|
|||||||
|
|
||||||
return server_obj
|
return server_obj
|
||||||
|
|
||||||
def server_get(self, **params):
|
def server_get(self, server_id):
|
||||||
try:
|
try:
|
||||||
return self.conn.compute.get_server(**params)
|
return self.conn.compute.get_server(server_id)
|
||||||
except sdk.exc.HttpException as ex:
|
except sdk.exc.HttpException as ex:
|
||||||
raise ex
|
raise ex
|
||||||
|
|
||||||
def server_list(self, details=False):
|
def server_list(self, details=False, **query):
|
||||||
try:
|
try:
|
||||||
return self.conn.compute.list_servers(details=details)
|
return self.conn.compute.servers(details=details, **query)
|
||||||
except sdk.exc.HttpException as ex:
|
except sdk.exc.HttpException as ex:
|
||||||
raise ex
|
raise ex
|
||||||
|
|
||||||
def server_update(self, **params):
|
def server_update(self, server_id, **params):
|
||||||
try:
|
try:
|
||||||
return self.conn.compute.update_server(**params)
|
return self.conn.compute.update_server(server_id, **params)
|
||||||
except sdk.exc.HttpException as ex:
|
except sdk.exc.HttpException as ex:
|
||||||
raise ex
|
raise ex
|
||||||
|
|
||||||
def server_delete(self, **params):
|
def server_delete(self, server_id):
|
||||||
timeout = cfg.CONF.default_action_timeout
|
timeout = cfg.CONF.default_action_timeout
|
||||||
if 'timeout' in params:
|
|
||||||
timeout = params.pop('timeout')
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.conn.compute.delete_server(**params)
|
self.conn.compute.delete_server(server_id, ignore_missing=True)
|
||||||
except sdk.exc.HttpException as ex:
|
except sdk.exc.HttpException as ex:
|
||||||
sdk.ignore_not_found(ex)
|
raise ex
|
||||||
return
|
|
||||||
|
|
||||||
total_sleep = 0
|
total_sleep = 0
|
||||||
while total_sleep < timeout:
|
while total_sleep < timeout:
|
||||||
try:
|
try:
|
||||||
self.server_get(**params)
|
self.server_get(server_id)
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
sdk.ignore_not_found(ex)
|
sdk.ignore_not_found(ex)
|
||||||
return
|
return
|
||||||
@ -199,33 +197,35 @@ class NovaClient(base.DriverBase):
|
|||||||
except sdk.exc.HttpException as ex:
|
except sdk.exc.HttpException as ex:
|
||||||
raise ex
|
raise ex
|
||||||
|
|
||||||
def server_interface_get(self, **params):
|
def server_interface_get(self, interface_id):
|
||||||
try:
|
try:
|
||||||
return self.conn.compute.get_server_interface(**params)
|
return self.conn.compute.get_server_interface(interface_id)
|
||||||
except sdk.exc.HttpException as ex:
|
except sdk.exc.HttpException as ex:
|
||||||
raise ex
|
raise ex
|
||||||
|
|
||||||
def server_interface_list(self):
|
def server_interface_list(self):
|
||||||
try:
|
try:
|
||||||
return self.conn.compute.list_server_interfaces()
|
return self.conn.compute.server_interfaces()
|
||||||
except sdk.exc.HttpException as ex:
|
except sdk.exc.HttpException as ex:
|
||||||
raise ex
|
raise ex
|
||||||
|
|
||||||
def server_interface_update(self, **params):
|
def server_interface_update(self, interface_id, **params):
|
||||||
try:
|
try:
|
||||||
return self.conn.compute.update_server_interface(**params)
|
return self.conn.compute.update_server_interface(interface_id,
|
||||||
|
**params)
|
||||||
except sdk.exc.HttpException as ex:
|
except sdk.exc.HttpException as ex:
|
||||||
raise ex
|
raise ex
|
||||||
|
|
||||||
def server_interface_delete(self, interface):
|
def server_interface_delete(self, interface_id):
|
||||||
try:
|
try:
|
||||||
self.conn.compute.delete_server_interface(value=interface)
|
self.conn.compute.delete_server_interface(interface_id,
|
||||||
|
ignore_missing=True)
|
||||||
except sdk.exc.HttpException as ex:
|
except sdk.exc.HttpException as ex:
|
||||||
sdk.ignore_not_found(ex)
|
raise ex
|
||||||
|
|
||||||
def server_ip_list(self, **params):
|
def server_ip_list(self, **params):
|
||||||
try:
|
try:
|
||||||
return server_ip.ServerIP.list(self.session, **params)
|
return self.conn.compute.server_ips()
|
||||||
except sdk.exc.HttpException as ex:
|
except sdk.exc.HttpException as ex:
|
||||||
raise ex
|
raise ex
|
||||||
|
|
||||||
|
@ -204,7 +204,7 @@ class ServerProfile(base.Profile):
|
|||||||
kwargs['imageRef'] = image.id
|
kwargs['imageRef'] = image.id
|
||||||
|
|
||||||
if self.FLAVOR in self.spec_data:
|
if self.FLAVOR in self.spec_data:
|
||||||
flavor = self.nova(obj).flavor_get(id=self.spec_data[self.FLAVOR])
|
flavor = self.nova(obj).flavor_get(self.spec_data[self.FLAVOR])
|
||||||
# wait for new verson of openstacksdk to fix this
|
# wait for new verson of openstacksdk to fix this
|
||||||
kwargs.pop(self.FLAVOR)
|
kwargs.pop(self.FLAVOR)
|
||||||
kwargs['flavorRef'] = flavor.id
|
kwargs['flavorRef'] = flavor.id
|
||||||
@ -230,7 +230,7 @@ class ServerProfile(base.Profile):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.nova(obj).server_delete(id=self.server_id)
|
self.nova(obj).server_delete(self.server_id)
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
LOG.error('error: %s' % six.text_type(ex))
|
LOG.error('error: %s' % six.text_type(ex))
|
||||||
raise ex
|
raise ex
|
||||||
@ -261,7 +261,7 @@ class ServerProfile(base.Profile):
|
|||||||
if obj.physical_id is None or obj.physical_id == '':
|
if obj.physical_id is None or obj.physical_id == '':
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
server = self.nova(obj).server_get(id=obj.physical_id)
|
server = self.nova(obj).server_get(obj.physical_id)
|
||||||
if server is None:
|
if server is None:
|
||||||
return {}
|
return {}
|
||||||
details = {
|
details = {
|
||||||
|
Loading…
Reference in New Issue
Block a user