Switch to use glanceclient to get image
Since Nova has deprecated the API proxies, see[1], we need to switch to use glanceclient to get image in ceilometer/nova_client.py. [1] https://blueprints.launchpad.net/nova/+spec/deprecate-api-proxies Change-Id: I13f794cd3b3c6ed345fcf0522229f961649eeb22 Closes-bug: #1594216
This commit is contained in:
parent
c51c9f1564
commit
23247f8b84
@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
import functools
|
import functools
|
||||||
|
|
||||||
|
import glanceclient
|
||||||
import novaclient
|
import novaclient
|
||||||
from novaclient import api_versions
|
from novaclient import api_versions
|
||||||
from novaclient import client as nova_client
|
from novaclient import client as nova_client
|
||||||
@ -39,6 +40,7 @@ SERVICE_OPTS = [
|
|||||||
cfg.CONF.register_opts(OPTS)
|
cfg.CONF.register_opts(OPTS)
|
||||||
cfg.CONF.register_opts(SERVICE_OPTS, group='service_types')
|
cfg.CONF.register_opts(SERVICE_OPTS, group='service_types')
|
||||||
cfg.CONF.import_opt('http_timeout', 'ceilometer.service')
|
cfg.CONF.import_opt('http_timeout', 'ceilometer.service')
|
||||||
|
cfg.CONF.import_opt('glance', 'ceilometer.image.glance', 'service_types')
|
||||||
cfg.CONF.import_group('service_credentials', 'ceilometer.keystone_client')
|
cfg.CONF.import_group('service_credentials', 'ceilometer.keystone_client')
|
||||||
|
|
||||||
LOG = log.getLogger(__name__)
|
LOG = log.getLogger(__name__)
|
||||||
@ -60,7 +62,7 @@ def logged(func):
|
|||||||
class Client(object):
|
class Client(object):
|
||||||
"""A client which gets information via python-novaclient."""
|
"""A client which gets information via python-novaclient."""
|
||||||
|
|
||||||
def __init__(self, endpoint_override=None, auth=None):
|
def __init__(self):
|
||||||
"""Initialize a nova client object."""
|
"""Initialize a nova client object."""
|
||||||
conf = cfg.CONF.service_credentials
|
conf = cfg.CONF.service_credentials
|
||||||
|
|
||||||
@ -68,21 +70,25 @@ class Client(object):
|
|||||||
if cfg.CONF.nova_http_log_debug:
|
if cfg.CONF.nova_http_log_debug:
|
||||||
logger = log.getLogger("novaclient-debug")
|
logger = log.getLogger("novaclient-debug")
|
||||||
logger.logger.setLevel(log.DEBUG)
|
logger.logger.setLevel(log.DEBUG)
|
||||||
|
ks_session = keystone_client.get_session()
|
||||||
|
|
||||||
self.nova_client = nova_client.Client(
|
self.nova_client = nova_client.Client(
|
||||||
version=api_versions.APIVersion('2.1'),
|
version=api_versions.APIVersion('2.1'),
|
||||||
session=keystone_client.get_session(),
|
session=ks_session,
|
||||||
|
|
||||||
# nova adapter options
|
# nova adapter options
|
||||||
region_name=conf.region_name,
|
region_name=conf.region_name,
|
||||||
interface=conf.interface,
|
interface=conf.interface,
|
||||||
service_type=cfg.CONF.service_types.nova,
|
service_type=cfg.CONF.service_types.nova,
|
||||||
|
|
||||||
# keystone adapter options
|
|
||||||
endpoint_override=endpoint_override,
|
|
||||||
auth=auth,
|
|
||||||
logger=logger)
|
logger=logger)
|
||||||
|
|
||||||
|
self.glance_client = glanceclient.Client(
|
||||||
|
version='2',
|
||||||
|
session=ks_session,
|
||||||
|
region_name=conf.region_name,
|
||||||
|
interface=conf.interface,
|
||||||
|
service_type=cfg.CONF.service_types.glance)
|
||||||
|
|
||||||
def _with_flavor_and_image(self, instances):
|
def _with_flavor_and_image(self, instances):
|
||||||
flavor_cache = {}
|
flavor_cache = {}
|
||||||
image_cache = {}
|
image_cache = {}
|
||||||
@ -126,8 +132,8 @@ class Client(object):
|
|||||||
image = cache.get(iid)
|
image = cache.get(iid)
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
image = self.nova_client.images.get(iid)
|
image = self.glance_client.images.get(iid)
|
||||||
except novaclient.exceptions.NotFound:
|
except glanceclient.exc.HTTPNotFound:
|
||||||
image = None
|
image = None
|
||||||
cache[iid] = image
|
cache[iid] = image
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
import glanceclient
|
||||||
import mock
|
import mock
|
||||||
import novaclient
|
import novaclient
|
||||||
from oslo_config import fixture as fixture_config
|
from oslo_config import fixture as fixture_config
|
||||||
@ -32,7 +33,7 @@ class TestNovaClient(base.BaseTestCase):
|
|||||||
self.nv.nova_client.flavors, 'get',
|
self.nv.nova_client.flavors, 'get',
|
||||||
side_effect=self.fake_flavors_get))
|
side_effect=self.fake_flavors_get))
|
||||||
self.useFixture(mockpatch.PatchObject(
|
self.useFixture(mockpatch.PatchObject(
|
||||||
self.nv.nova_client.images, 'get',
|
self.nv.glance_client.images, 'get',
|
||||||
side_effect=self.fake_images_get))
|
side_effect=self.fake_images_get))
|
||||||
self.CONF = self.useFixture(fixture_config.Config()).conf
|
self.CONF = self.useFixture(fixture_config.Config()).conf
|
||||||
|
|
||||||
@ -65,7 +66,7 @@ class TestNovaClient(base.BaseTestCase):
|
|||||||
a.name = image_details[a.id][0]
|
a.name = image_details[a.id][0]
|
||||||
a.metadata = image_details[a.id][1]
|
a.metadata = image_details[a.id][1]
|
||||||
else:
|
else:
|
||||||
raise novaclient.exceptions.NotFound('foobar')
|
raise glanceclient.exc.HTTPNotFound('foobar')
|
||||||
|
|
||||||
return a
|
return a
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user