Adds OS API 1.1 support

This commit is contained in:
Sandy Walsh
2011-08-08 19:05:09 +00:00
committed by Tarmac
6 changed files with 18 additions and 15 deletions

View File

@@ -16,3 +16,4 @@ export NOVA_API_KEY="%(access)s"
export NOVA_USERNAME="%(user)s" export NOVA_USERNAME="%(user)s"
export NOVA_PROJECT_ID="%(project)s" export NOVA_PROJECT_ID="%(project)s"
export NOVA_URL="%(os)s" export NOVA_URL="%(os)s"
export NOVA_VERSION="1.1"

View File

@@ -317,7 +317,7 @@ DEFINE_string('osapi_extensions_path', '/var/lib/nova/extensions',
DEFINE_string('osapi_host', '$my_ip', 'ip of api server') DEFINE_string('osapi_host', '$my_ip', 'ip of api server')
DEFINE_string('osapi_scheme', 'http', 'prefix for openstack') DEFINE_string('osapi_scheme', 'http', 'prefix for openstack')
DEFINE_integer('osapi_port', 8774, 'OpenStack API port') DEFINE_integer('osapi_port', 8774, 'OpenStack API port')
DEFINE_string('osapi_path', '/v1.0/', 'suffix for openstack') DEFINE_string('osapi_path', '/v1.1/', 'suffix for openstack')
DEFINE_integer('osapi_max_limit', 1000, DEFINE_integer('osapi_max_limit', 1000,
'max number of items returned in a collection response') 'max number of items returned in a collection response')

View File

@@ -17,7 +17,8 @@
Handles all requests relating to schedulers. Handles all requests relating to schedulers.
""" """
import novaclient from novaclient import v1_1 as novaclient
from novaclient import exceptions as novaclient_exceptions
from nova import db from nova import db
from nova import exception from nova import exception
@@ -112,7 +113,7 @@ def _wrap_method(function, self):
def _process(func, zone): def _process(func, zone):
"""Worker stub for green thread pool. Give the worker """Worker stub for green thread pool. Give the worker
an authenticated nova client and zone info.""" an authenticated nova client and zone info."""
nova = novaclient.OpenStack(zone.username, zone.password, None, nova = novaclient.Client(zone.username, zone.password, None,
zone.api_url) zone.api_url)
nova.authenticate() nova.authenticate()
return func(nova, zone) return func(nova, zone)
@@ -132,10 +133,10 @@ def call_zone_method(context, method_name, errors_to_ignore=None,
zones = db.zone_get_all(context) zones = db.zone_get_all(context)
for zone in zones: for zone in zones:
try: try:
nova = novaclient.OpenStack(zone.username, zone.password, None, nova = novaclient.Client(zone.username, zone.password, None,
zone.api_url) zone.api_url)
nova.authenticate() nova.authenticate()
except novaclient.exceptions.BadRequest, e: except novaclient_exceptions.BadRequest, e:
url = zone.api_url url = zone.api_url
LOG.warn(_("Failed request to zone; URL=%(url)s: %(e)s") LOG.warn(_("Failed request to zone; URL=%(url)s: %(e)s")
% locals()) % locals())
@@ -188,7 +189,7 @@ def _issue_novaclient_command(nova, zone, collection,
if method_name in ['find', 'findall']: if method_name in ['find', 'findall']:
try: try:
return getattr(manager, method_name)(**kwargs) return getattr(manager, method_name)(**kwargs)
except novaclient.NotFound: except novaclient_exceptions.NotFound:
url = zone.api_url url = zone.api_url
LOG.debug(_("%(collection)s.%(method_name)s didn't find " LOG.debug(_("%(collection)s.%(method_name)s didn't find "
"anything matching '%(kwargs)s' on '%(url)s'" % "anything matching '%(kwargs)s' on '%(url)s'" %
@@ -200,7 +201,7 @@ def _issue_novaclient_command(nova, zone, collection,
item = args.pop(0) item = args.pop(0)
try: try:
result = manager.get(item) result = manager.get(item)
except novaclient.NotFound: except novaclient_exceptions.NotFound:
url = zone.api_url url = zone.api_url
LOG.debug(_("%(collection)s '%(item)s' not found on '%(url)s'" % LOG.debug(_("%(collection)s '%(item)s' not found on '%(url)s'" %
locals())) locals()))

View File

@@ -24,7 +24,9 @@ import operator
import json import json
import M2Crypto import M2Crypto
import novaclient
from novaclient import v1_1 as novaclient
from novaclient import exceptions as novaclient_exceptions
from nova import crypto from nova import crypto
from nova import db from nova import db
@@ -118,10 +120,9 @@ class ZoneAwareScheduler(driver.Scheduler):
% locals()) % locals())
nova = None nova = None
try: try:
nova = novaclient.OpenStack(zone.username, zone.password, None, nova = novaclient.Client(zone.username, zone.password, None, url)
url)
nova.authenticate() nova.authenticate()
except novaclient.exceptions.BadRequest, e: except novaclient_exceptions.BadRequest, e:
raise exception.NotAuthorized(_("Bad credentials attempting " raise exception.NotAuthorized(_("Bad credentials attempting "
"to talk to zone at %(url)s.") % locals()) "to talk to zone at %(url)s.") % locals())

View File

@@ -18,10 +18,11 @@ ZoneManager oversees all communications with child Zones.
""" """
import datetime import datetime
import novaclient
import thread import thread
import traceback import traceback
from novaclient import v1_1 as novaclient
from eventlet import greenpool from eventlet import greenpool
from nova import db from nova import db
@@ -89,8 +90,8 @@ class ZoneState(object):
def _call_novaclient(zone): def _call_novaclient(zone):
"""Call novaclient. Broken out for testing purposes.""" """Call novaclient. Broken out for testing purposes."""
client = novaclient.OpenStack(zone.username, zone.password, None, client = novaclient.Client(zone.username, zone.password, None,
zone.api_url) zone.api_url)
return client.zones.info()._info return client.zones.info()._info

View File

@@ -18,7 +18,6 @@ Tests For ZoneManager
import datetime import datetime
import mox import mox
import novaclient
from nova import context from nova import context
from nova import db from nova import db