예제 #1
0
 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)
예제 #2
0
 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)
예제 #3
0
 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)
예제 #4
0
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
             })
예제 #5
0
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
예제 #6
0
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
예제 #7
0
 def test_text(self):
     version1 = api_base.Version('1.0')
     self.assertEqual("1.0", str(version1))
     self.assertEqual("Version('1.0')", repr(version1))
예제 #8
0
 def test_dict(self):
     version1 = api_base.Version('1.0')
     version1b = api_base.Version('1.0')
     self.assertIn(version1, {version1b: 1})
예제 #9
0
    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)
예제 #10
0
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