def test_greater(self): version1 = api_base.Version('1.0') version12 = api_base.Version('1.2') version120 = api_base.Version('1.20') self.assertGreater(version12, version1) self.assertGreater(version120, version12) self.assertEqual(version12, 1) # sic! self.assertGreater(1.2, version1) self.assertGreater(version120, 1.2) self.assertGreater('1.20', version12)
def test_major_minor(self): version1 = api_base.Version('1') version10 = api_base.Version('1.0') version120 = api_base.Version('1.20') self.assertEqual(1, version1.major) self.assertEqual(0, version1.minor) self.assertEqual(1, version10.major) self.assertEqual(0, version10.minor) self.assertEqual(1, version120.major) self.assertEqual(20, version120.minor)
def test_equal(self): version = api_base.Version('1.0') self.assertEqual(1, version) self.assertEqual(1.0, version) self.assertEqual('1', version) self.assertEqual('1.0', version) version = api_base.Version(1) self.assertEqual(1, version) self.assertEqual(1.0, version) self.assertEqual('1', version) self.assertEqual('1.0', version) version = api_base.Version(1.0) self.assertEqual(1, version) self.assertEqual(1.0, version) self.assertEqual('1', version) self.assertEqual('1.0', version) version = api_base.Version('1.0') self.assertEqual(api_base.Version(1), version) self.assertEqual(api_base.Version(1.0), version) self.assertEqual(api_base.Version('1'), version) self.assertEqual(api_base.Version('1.0'), version)
def _find_cinder_url(request, version=None): if version is None: api_version = VERSIONS.get_active_version() version = api_version['version'] version = base.Version(version) # We support only cinder v3. # FIXME: 'block-storage' is also a valid service_type for cinder candidates = ['volumev3', 'volume'] for service_name in candidates: try: return version, base.url_for(request, service_name) except exceptions.ServiceCatalogException: pass else: raise exceptions.ServiceCatalogException( ("Cinder %(version)s requested but no '%(service)s' service " "type available in Keystone catalog.") % { 'version': version, 'service': candidates })
def cinderclient(request, version=None): if version is None: api_version = VERSIONS.get_active_version() version = api_version['version'] insecure = settings.OPENSTACK_SSL_NO_VERIFY cacert = settings.OPENSTACK_SSL_CACERT (username, token_id, tenant_id, cinder_urls, auth_url) = get_auth_params_from_request(request) version = base.Version(version) if version == 2: service_names = ('volumev2', 'volume') elif version == 3: service_names = ('volumev3', 'volume') else: service_names = ('volume',) for name, _url in cinder_urls: if name in service_names: cinder_url = _url break else: raise exceptions.ServiceCatalogException( "Cinder {version} requested but no '{service}' service " "type available in Keystone catalog.".format(version=version, service=service_names) ) c = cinder_client.Client( version, username, token_id, project_id=tenant_id, auth_url=auth_url, insecure=insecure, cacert=cacert, http_log_debug=settings.DEBUG, ) c.client.auth_token = token_id c.client.management_url = cinder_url return c
def vmexpireclient(request, version=None): if version is None: api_version = VERSIONS.get_active_version() version = api_version['version'] insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False) cacert = getattr(settings, 'OPENSTACK_SSL_CACERT', None) # username, token_id, tenant_id, vmexpire_urls, auth_url = request_auth_params (username, token_id, tenant_id, vmexpire_urls, auth_url) = get_auth_params_from_request(request) try: version = base.Version(version) except Exception: version = str(version) service_names = ('vmexpire', ) for name, vmexpire_url in vmexpire_urls: if name in service_names: break else: raise exceptions.ServiceCatalogException( "VmExpire {version} requested but no '{service}' service " "type available in Keystone catalog.".format( version=version, service=service_names)) c = { 'version': version, 'username': username, 'token_id': token_id, 'project_id': tenant_id, 'auth_url': auth_url, 'insecure': insecure, 'cacert': cacert, 'http_log_debug': settings.DEBUG, 'auth_token': token_id, 'management_url': vmexpire_url } return c
def test_text(self): version1 = api_base.Version('1.0') self.assertEqual("1.0", str(version1)) self.assertEqual("Version('1.0')", repr(version1))
def test_dict(self): version1 = api_base.Version('1.0') version1b = api_base.Version('1.0') self.assertIn(version1, {version1b: 1})
def test_dict(self): test_dict = {api_base.Version('1.0'): 1} self.assertIn(api_base.Version('1'), test_dict) self.assertIn(api_base.Version('1.0'), test_dict) self.assertIn(api_base.Version('1.0.0'), test_dict) self.assertIn(api_base.Version(1), test_dict) self.assertIn(api_base.Version(1.0), test_dict) self.assertNotIn(api_base.Version('1.2'), test_dict) self.assertNotIn(api_base.Version('1.20'), test_dict) test_dict = {api_base.Version('1.2'): 1} self.assertIn(api_base.Version('1.2'), test_dict) self.assertIn(api_base.Version('1.2.0'), test_dict) self.assertIn(api_base.Version(1.2), test_dict) self.assertNotIn(api_base.Version('1'), test_dict) self.assertNotIn(api_base.Version('1.0'), test_dict) self.assertNotIn(api_base.Version('1.0.0'), test_dict) self.assertNotIn(api_base.Version(1), test_dict) self.assertNotIn(api_base.Version(1.0), test_dict) self.assertNotIn(api_base.Version('1.20'), test_dict)
import datetime import time import logging import requests from openstack_dashboard.api import base from horizon.utils.memoized import memoized # from horizon.utils.memoized import memoized_with_request from horizon import exceptions LOG = logging.getLogger(__name__) VERSIONS = base.APIVersionManager("vmexpire", preferred_version=base.Version(1)) def get_auth_params_from_request(request): auth_url = base.url_for(request, 'identity') vmexpire_urls = [] for service_name in ('vmexpire', ): try: vmexpire_url = base.url_for(request, service_name) vmexpire_urls.append((service_name, vmexpire_url)) except exceptions.ServiceCatalogException: pass if not vmexpire_urls: raise exceptions.ServiceCatalogException( "no vmexpire service configured") vmexpire_urls = tuple(vmexpire_urls) # need to make it cacheable