# See the License for the specific language governing permissions and
# limitations under the License.
-pip install -r requirements.txt
+pip3 install -r requirements.txt
DIR=$(echo "$TOXINI" | rev | cut -f2- -d'/' | rev)
cd "${CURDIR}/${DIR}"
rm -rf ./venv-tox ./.tox
- virtualenv ./venv-tox
+ virtualenv ./venv-tox --python=python3
source ./venv-tox/bin/activate
pip install --upgrade pip
pip install --upgrade tox argparse
+'''
+test extensions
+'''
# Copyright (c) 2017-2018 Wind River Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# See the License for the specific language governing permissions and
# limitations under the License.
+import unittest
from django.test import Client
from rest_framework import status
-import unittest
class TestExtensions(unittest.TestCase):
+ '''
+ classs test extensions
+ '''
def setUp(self):
self.client = Client()
"/api/multicloud-pike/v0/" + vimid + "/extensions/")
json_content = response.json()
- self.assertEquals(status.HTTP_200_OK, response.status_code)
- self.assertEquals(4, len(json_content.keys()))
+ self.assertEqual(status.HTTP_200_OK, response.status_code)
+ self.assertEqual(4, len(list(json_content.keys())))
- self.assertEquals(cloud_owner, json_content["cloud-owner"])
- self.assertEquals(cloud_region_id, json_content["cloud-region-id"])
- self.assertEquals(vimid, json_content["vimid"])
+ self.assertEqual(cloud_owner, json_content["cloud-owner"])
+ self.assertEqual(cloud_region_id, json_content["cloud-region-id"])
+ self.assertEqual(vimid, json_content["vimid"])
+'''
+Extension url
+'''
# Copyright (c) 2017-2018 Wind River Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
from pike.extensions.views import extensions
-urlpatterns = [
+URLPATTERNS = [
url(r'^sions/?$', extensions.Extensions.as_view()),
]
-urlpatterns = format_suffix_patterns(urlpatterns)
+urlpatterns = format_suffix_patterns(URLPATTERNS)
+'''
+Extension v1 URl
+'''
# Copyright (c) 2018 Intel Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
from pike.extensions.views import extensions
-urlpatterns = [
+URLPATTERNS = [
url(r'^sions/?$', extensions.APIv1Extensions.as_view()),
]
-urlpatterns = format_suffix_patterns(urlpatterns)
+urlpatterns = format_suffix_patterns(URLPATTERNS)
import logging
-from common.msapi import extsys
from django.conf import settings
+from common.msapi import extsys
from newton_base.extensions import extensions as newton_extensions
-logger = logging.getLogger(__name__)
+LOGGER = logging.getLogger(__name__)
# DEBUG=True
class Extensions(newton_extensions.Extensions):
def __init__(self):
- self._logger = logger
+ self._logger = LOGGER
self.proxy_prefix = settings.MULTICLOUD_PREFIX
class APIv1Extensions(Extensions):
def __init__(self):
- self._logger = logger
+ self._logger = LOGGER
self.proxy_prefix = settings.MULTICLOUD_API_V1_PREFIX
def get(self, request, cloud_owner="", cloud_region_id=""):
- self._logger.info("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
+ self._logger.debug("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
vimid = extsys.encode_vim_id(cloud_owner, cloud_region_id)
return super(APIv1Extensions, self).get(request, vimid)
+'''
+This is middle module
+'''
# Copyright (c) 2017-2018 Wind River Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
"HTTP_X_FORWARDED_SERVER"]
-class LogContextMiddleware(object):
+class LogContextMiddleware:
+ '''
+ log context middleware
+ '''
- # the last IP behind multiple proxies, if no exist proxies
- # get local host ip.
- def _getLastIp(self, request):
-
- ip = ""
+ def _get_last_ip(self, request):
+ '''
+ the last IP behind multiple proxies, if no exist proxies
+ get local host ip.
+ '''
+ local_ip = ""
try:
for field in FORWARDED_FOR_FIELDS:
if field in request.META:
if ',' in request.META[field]:
parts = request.META[field].split(',')
- ip = parts[-1].strip().split(":")[0]
+ local_ip = parts[-1].strip().split(":")[0]
else:
- ip = request.META[field].split(":")[0]
+ local_ip = request.META[field].split(":")[0]
- if ip == "":
- ip = request.META.get("HTTP_HOST").split(":")[0]
+ if local_ip == "":
+ local_ip = request.META.get("HTTP_HOST").split(":")[0]
except Exception:
pass
- return ip
+ return local_ip
def process_request(self, request):
+ '''
+ process request
+ '''
# fetch propageted Id from other component. if do not fetch id,
# generate one.
- ReqeustID = request.META.get("HTTP_X_TRANSACTIONID", None)
- if ReqeustID is None:
- ReqeustID = str(uuid.uuid3(uuid.NAMESPACE_URL, settings.MULTIVIM_VERSION))
- MDC.put("requestID", ReqeustID)
+ reqeust_id = request.META.get("HTTP_X_TRANSACTIONID", None)
+ if reqeust_id is None:
+ reqeust_id = str(uuid.uuid3(uuid.NAMESPACE_URL, settings.MULTIVIM_VERSION))
+ MDC.put("requestID", reqeust_id)
# generate the reqeust id
- InvocationID = str(uuid.uuid4())
- MDC.put("invocationID", InvocationID)
+ invocation_id = str(uuid.uuid4())
+ MDC.put("invocationID", invocation_id)
MDC.put("serviceName", settings.MULTIVIM_VERSION)
- MDC.put("serviceIP", self._getLastIp(request))
+ MDC.put("serviceIP", self._get_last_ip(request))
return None
- def process_response(self, request, response):
-
+ def process_response(self, response):
+ '''
+ process response
+ '''
MDC.clear()
return response
+++ /dev/null
-# Copyright (c) 2018 Intel Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import json
-
-import mock
-import unittest
-
-from django.test import Client
-from rest_framework import status
-
-from newton_base.util import VimDriverUtils
-from newton_base.tests import mock_info
-
-mock_viminfo = {
- "createTime": "2017-04-01 02:22:27",
- "domain": "Default",
- "name": "TiS_R4",
- "password": "admin",
- "tenant": "admin",
- "type": "openstack",
- "url": "http://128.224.180.14:5000/v3",
- "userName": "admin",
- "vendor": "WindRiver",
- "version": "pike",
- "vimId": "windriver-hudson-dc_RegionOne",
- 'cloud_owner': 'windriver-hudson-dc',
- 'cloud_region_id': 'RegionOne',
- 'cloud_extra_info': '',
- 'insecure': 'True',
-}
-
-mock_token_id = "1a62b3971d774404a504c5d9a3e506e3"
-
-mock_catalog_response = {
- "catalog": [
- {
- "id": "99aefcc82a9246f98f8c281e61ffc754",
- "endpoints": [
- {
- "region": "RegionOne",
- "url": "http://128.224.180.14:9696",
- "id": "39583c1508ad4b71b380570a745ee10a",
- "interface": "public",
- "region_id": "RegionOne"
- },
- {
- "url": "http://192.168.204.2:9696",
- "region": "RegionOne",
- "id": "37e8d07ba24e4b8f93490c9daaba06e2",
- "interface": "internal",
- "region_id": "RegionOne"
- },
- {
- "interface": "admin",
- "id": "7eee4ca98d444b1abb00a50d4b89373f",
- "region_id": "RegionOne",
- "region": "RegionOne",
- "url": "http://192.168.204.2:9696"
- }
- ],
- "name": "neutron",
- "type": "network"
- },
- {
- "endpoints": [
- {
- "interface": "public",
- "id": "10496738fa374295a4a88a63b81a1589",
- "region_id": "RegionOne",
- "url": "http://128.224.180.14:8777",
- "region": "RegionOne"
- },
- {
- "id": "02dcb8c0bd464c4489fa0a0c9f28571f",
- "region_id": "RegionOne",
- "interface": "internal",
- "url": "http://192.168.204.2:8777",
- "region": "RegionOne"
- },
- {
- "region_id": "RegionOne",
- "id": "8a73b0d3743b4e78b87614690f6e97fe",
- "interface": "admin",
- "url": "http://192.168.204.2:8777",
- "region": "RegionOne"
- }
- ],
- "id": "d131054da83f4c93833799747a0f4709",
- "name": "ceilometer",
- "type": "metering"
- },
- {
- "type": "volumev2",
- "name": "cinderv2",
- "endpoints": [
- {
- "id": "35a67ad36f0447d19c9662babf7cf609",
- "interface": "public",
- "region_id": "RegionOne",
- "url": "http://128.224.180.14:8776/v2/fcca3cc49d5e42caae15459e27103efc",
- "region": "RegionOne"
- },
- {
- "region": "RegionOne",
- "url": "http://192.168.204.2:8776/v2/fcca3cc49d5e42caae15459e27103efc",
- "id": "c6ea42052268420fa2c8d351ee68c922",
- "interface": "internal",
- "region_id": "RegionOne"
- },
- {
- "region_id": "RegionOne",
- "id": "91cb24853dc3450d847b0c286a2e44ea",
- "interface": "admin",
- "region": "RegionOne",
- "url": "http://192.168.204.2:8776/v2/fcca3cc49d5e42caae15459e27103efc"
- }
- ],
- "id": "40440057102440739c30be10a66bc5d1"
- },
- {
- "name": "heat",
- "type": "orchestration",
- "id": "35300cce88db4bd4bb5a72ffe3b88b00",
- "endpoints": [
- {
- "id": "58999d7b4a94439089ecfb2aca2d7f6c",
- "region_id": "RegionOne",
- "interface": "public",
- "region": "RegionOne",
- "url": "http://128.224.180.14:8004/v1/fcca3cc49d5e42caae15459e27103efc"
- },
- {
- "url": "http://192.168.204.2:8004/v1/fcca3cc49d5e42caae15459e27103efc",
- "region": "RegionOne",
- "interface": "internal",
- "id": "1e0ee1a2aef84802b921d422372a567e",
- "region_id": "RegionOne"
- },
- {
- "region": "RegionOne",
- "url": "http://192.168.204.2:8004/v1/fcca3cc49d5e42caae15459e27103efc",
- "id": "17661bf4859741b8a43a461dedad1871",
- "region_id": "RegionOne",
- "interface": "admin"
- }
- ]
- },
- {
- "id": "08dc6912aea64c01925012c8a6df250a",
- "endpoints": [
- {
- "id": "02792c4eed77486083f9b2e52d7b94b0",
- "region_id": "RegionOne",
- "interface": "public",
- "region": "RegionOne",
- "url": "http://128.224.180.14:5000/v3"
- },
- {
- "id": "b6d5cad394b94309ae40d8de88059c5f",
- "region_id": "RegionOne",
- "interface": "internal",
- "url": "http://192.168.204.2:5000/v3",
- "region": "RegionOne"
- },
- {
- "region": "RegionOne",
- "url": "http://192.168.204.2:35357/v3",
- "region_id": "RegionOne",
- "id": "1f18e2b7c6a34493b86853b65917888e",
- "interface": "admin"
- }
- ],
- "type": "identity",
- "name": "keystone"
- },
- {
- "name": "vim",
- "type": "nfv",
- "endpoints": [
- {
- "url": "http://128.224.180.14:4545",
- "region": "RegionOne",
- "id": "b33e317345e4480ab0786e4960995ec9",
- "interface": "public",
- "region_id": "RegionOne"
- },
- {
- "region": "RegionOne",
- "url": "http://192.168.204.2:4545",
- "interface": "internal",
- "id": "03c85828d5bf432ab04831aa65ac9c52",
- "region_id": "RegionOne"
- },
- {
- "id": "067983abb061476cb53a9e23a740d98f",
- "region_id": "RegionOne",
- "interface": "admin",
- "url": "http://192.168.204.2:4545",
- "region": "RegionOne"
- }
- ],
- "id": "01636c856fc84988b38b9117eb4a8021"
- },
- {
- "name": "aodh",
- "type": "alarming",
- "id": "eb269151d0e44744a5b5449657bdc61c",
- "endpoints": [
- {
- "id": "5bfc6c056e0244c493642eb82f6aaa11",
- "region_id": "RegionOne",
- "interface": "public",
- "url": "http://128.224.180.14:8042",
- "region": "RegionOne"
- },
- {
- "region": "RegionOne",
- "url": "http://192.168.204.2:8042",
- "region_id": "RegionOne",
- "id": "ad69c7f76dce4089a195b9221ddbfb44",
- "interface": "internal"
- },
- {
- "interface": "admin",
- "id": "3e8fcdfa7bcb40b0ae33c282adfcc9ff",
- "region_id": "RegionOne",
- "region": "RegionOne",
- "url": "http://192.168.204.2:8042"
- }
- ]
- },
- {
- "name": "sysinv",
- "type": "platform",
- "endpoints": [
- {
- "region": "RegionOne",
- "url": "http://128.224.180.14:6385/v1",
- "interface": "public",
- "id": "ba4ba8104590421b84672306c7e0e1f1",
- "region_id": "RegionOne"
- },
- {
- "region": "RegionOne",
- "url": "http://192.168.204.2:6385/v1",
- "interface": "internal",
- "id": "a1cba34b163f496ab1acd6e9b51e39a2",
- "region_id": "RegionOne"
- },
- {
- "url": "http://192.168.204.2:6385/v1",
- "region": "RegionOne",
- "id": "7c171210a2c841a6a52a5713e316d6fc",
- "interface": "admin",
- "region_id": "RegionOne"
- }
- ],
- "id": "256bbad671f946fea543e6bd71f98875"
- },
- {
- "id": "e84665dcce814c05b4c5084964547534",
- "endpoints": [
- {
- "url": "http://128.224.180.14:8000/v1/fcca3cc49d5e42caae15459e27103efc",
- "region": "RegionOne",
- "region_id": "RegionOne",
- "id": "b2ed1a23dc6944bea129c20861e0286a",
- "interface": "public"
- },
- {
- "region": "RegionOne",
- "url": "http://192.168.204.2:8000/v1/fcca3cc49d5e42caae15459e27103efc",
- "interface": "internal",
- "id": "c4df7c6bc15646848eff35caf6ffea8e",
- "region_id": "RegionOne"
- },
- {
- "region_id": "RegionOne",
- "id": "61b3dabb761443a89ab549f437c05ab0",
- "interface": "admin",
- "region": "RegionOne",
- "url": "http://192.168.204.2:8000/v1/fcca3cc49d5e42caae15459e27103efc"
- }
- ],
- "name": "heat-cfn",
- "type": "cloudformation"
- },
- {
- "id": "823024424a014981a3721229491c0b1a",
- "endpoints": [
- {
- "region": "RegionOne",
- "url": "http://128.224.180.14:8776/v1/fcca3cc49d5e42caae15459e27103efc",
- "region_id": "RegionOne",
- "id": "4a52e4e54ff440789f9a797919c4a0f2",
- "interface": "public"
- },
- {
- "url": "http://192.168.204.2:8776/v1/fcca3cc49d5e42caae15459e27103efc",
- "region": "RegionOne",
- "id": "d4f9a84476524a39844f0fce63f1022e",
- "region_id": "RegionOne",
- "interface": "internal"
- },
- {
- "region": "RegionOne",
- "url": "http://192.168.204.2:8776/v1/fcca3cc49d5e42caae15459e27103efc",
- "interface": "admin",
- "id": "81bf3810a8cc4697b68c6e93b5b8fe1f",
- "region_id": "RegionOne"
- }
- ],
- "type": "volume",
- "name": "cinder"
- },
- {
- "name": "glance",
- "type": "image",
- "endpoints": [
- {
- "id": "bd930aba961946cfb1401bada56d55e3",
- "region_id": "RegionOne",
- "interface": "public",
- "region": "RegionOne",
- "url": "http://128.224.180.14:9292"
- },
- {
- "region": "RegionOne",
- "url": "http://192.168.204.2:9292",
- "id": "c11da585f0b141b99d1e18bb9a607beb",
- "region_id": "RegionOne",
- "interface": "internal"
- },
- {
- "region": "RegionOne",
- "url": "http://192.168.204.2:9292",
- "id": "31b26c625a6a4fc7910dc5935155996e",
- "interface": "admin",
- "region_id": "RegionOne"
- }
- ],
- "id": "3b78cf039bc54d1bbb99ab3a4be15ef1"
- },
- {
- "id": "b8701374bf254de1beee8a2c9ecc6b33",
- "endpoints": [
- {
- "region_id": "RegionOne",
- "id": "f7407f330c8b4577b1d377d3fab9c2f8",
- "interface": "public",
- "region": "RegionOne",
- "url": "http://128.224.180.14:15491"
- },
- {
- "url": "http://192.168.204.2:5491",
- "region": "RegionOne",
- "interface": "internal",
- "id": "0b37ce31a32f4b6fa5e1aa0d6c20680f",
- "region_id": "RegionOne"
- },
- {
- "region_id": "RegionOne",
- "id": "7b87ea72adf245e1991e9e0df29b7ea9",
- "interface": "admin",
- "region": "RegionOne",
- "url": "http://192.168.204.2:5491"
- }
- ],
- "type": "patching",
- "name": "patching"
- },
- {
- "id": "0ec0923a58f04ffeb6fced3bbc5c0947",
- "endpoints": [
- {
- "url": "http://128.224.180.14:8774/v2.1/fcca3cc49d5e42caae15459e27103efc",
- "region": "RegionOne",
- "id": "13168b12da17451fb39630de67db168f",
- "region_id": "RegionOne",
- "interface": "public"
- },
- {
- "id": "22dd6a44209f42d986b82e3aa6535f82",
- "interface": "internal",
- "region_id": "RegionOne",
- "region": "RegionOne",
- "url": "http://192.168.204.2:8774/v2.1/fcca3cc49d5e42caae15459e27103efc"
- },
- {
- "region": "RegionOne",
- "url": "http://192.168.204.2:8774/v2.1/fcca3cc49d5e42caae15459e27103efc",
- "id": "552a991ae501492f841c1b6e2ff38fc5",
- "region_id": "RegionOne",
- "interface": "admin"
- }
- ],
- "type": "compute",
- "name": "nova"
- },
- {
- "id": "50b219650f1049b097b3f14e8c70cdf8",
- "endpoints": [
- {
- "interface": "public",
- "id": "5a4276cd6e4d43e883cf8640d4e13f7d",
- "region_id": "RegionOne",
- "region": "RegionOne",
- "url": "http://128.224.180.14:8776/v3/fcca3cc49d5e42caae15459e27103efc"
- },
- {
- "region": "RegionOne",
- "url": "http://192.168.204.2:8776/v3/fcca3cc49d5e42caae15459e27103efc",
- "region_id": "RegionOne",
- "id": "c796df3ca5a84fc18db5b43a55283953",
- "interface": "internal"
- },
- {
- "region_id": "RegionOne",
- "id": "cf55c2b34d0049ba835a2e48b9ad0e2e",
- "interface": "admin",
- "url": "http://192.168.204.2:8776/v3/fcca3cc49d5e42caae15459e27103efc",
- "region": "RegionOne"
- }
- ],
- "type": "volumev3",
- "name": "cinderv3"
- }
- ],
-}
-
-mock_auth_state = {
- "body": {
- "token": {
- "is_domain": "false",
- "expires_at": "2017-08-27T14:19:15.000000Z",
- "issued_at": "2017-08-27T13:19:15.000000Z",
- "roles": [
- {
- "id": "9fe2ff9ee4384b1894a90878d3e92bab",
- "name": "_member_"
- },
- {
- "id": "b86a7e02935844b899d3d326f83c1b1f",
- "name": "admin"
- },
- {
- "name": "heat_stack_owner",
- "id": "7de502236e954c8282de32e773fc052e"
- }
- ],
- "methods": [
- "password"
- ],
- "catalog": mock_catalog_response['catalog'],
- "project": {
- "name": "admin",
- "id": "fcca3cc49d5e42caae15459e27103efc",
- "domain": {
- "id": "default",
- "name": "Default"
- }
- },
- "user": {
- "name": "admin",
- "id": "9efb043c7629497a8028d7325ca1afb0",
- "domain": {
- "id": "default",
- "name": "Default"
- }
- },
- "audit_ids": [
- "_ZWT10DtSZKRXIvIcxun7w"
- ]
- }
- },
- "auth_token": mock_token_id
-}
-
-
-class TestIdentityService(unittest.TestCase):
- def setUp(self):
- self.client = Client()
-
- @mock.patch.object(VimDriverUtils, 'get_vim_info')
- @mock.patch.object(VimDriverUtils, 'get_session')
- @mock.patch.object(VimDriverUtils, 'get_auth_state')
- @mock.patch.object(VimDriverUtils, 'update_token_cache')
- def test_token(self, mock_update_token_cache, mock_get_auth_state, mock_get_session, mock_get_vim_info):
- '''
- test API: get token
- :param mock_update_token_cache:
- :param mock_get_auth_state:
- :param mock_get_session:
- :param mock_get_vim_info:
- :return:
- '''
-
- # mock VimDriverUtils APIs
- mock_session_specs = ["get"]
- mock_session_get_response = {'status': 200}
- mock_session = mock.Mock(name='mock_session', spec=mock_session_specs)
- mock_session.get.return_value = mock_session_get_response
-
- mock_get_vim_info.return_value = mock_viminfo
- mock_get_session.return_value = mock_session
- mock_get_auth_state.return_value = json.dumps(mock_auth_state)
- mock_update_token_cache.return_value = mock_token_id
-
- # simulate client to make the request
- data = {}
- response = self.client.post("/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/identity/v3/auth/tokens", data=data, format='json')
- self.failUnlessEqual(status.HTTP_201_CREATED, response.status_code)
- context = response.json()
-
- self.assertTrue(response['X-Subject-Token'] == mock_token_id)
- self.assertTrue(context['token']['catalog'] is not None)
-
- @mock.patch.object(VimDriverUtils, 'get_vim_info')
- @mock.patch.object(VimDriverUtils, 'get_session')
- @mock.patch.object(VimDriverUtils, 'get_auth_state')
- @mock.patch.object(VimDriverUtils, 'update_token_cache')
- def test_tokensV2(self, mock_update_token_cache, mock_get_auth_state,
- mock_get_session, mock_get_vim_info):
- '''
- test API: get token
- :param mock_update_token_cache:
- :param mock_get_auth_state:
- :param mock_get_session:
- :param mock_get_vim_info:
- :return:
- '''
-
- # mock VimDriverUtils APIs
- mock_session_specs = ["get"]
- mock_session_get_response = {'status': 200}
- mock_session = mock.Mock(name='mock_session',
- spec=mock_session_specs)
- mock_session.get.return_value = mock_session_get_response
-
- mock_get_vim_info.return_value = mock_info.MOCK_VIM_INFO
- mock_get_session.return_value = mock_session
- mock_get_auth_state.return_value = json.dumps(mock_auth_state)
- mock_update_token_cache.return_value = mock_info.MOCK_TOKEN_ID
-
- # simulate client to make the request
- data = {}
- response = self.client.post(
- "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/identity/v2.0/tokens",
- data=data, format='json')
- self.failUnlessEqual(status.HTTP_200_OK,
- response.status_code)
- context = response.json()
-
- self.assertIsNotNone(context['access']['token'])
- self.assertEqual(mock_info.MOCK_TOKEN_ID,
- context['access']['token']["id"])
- self.assertIsNotNone(context['access']['serviceCatalog'])
-
- @mock.patch.object(VimDriverUtils, 'get_vim_info')
- @mock.patch.object(VimDriverUtils, 'get_session')
- @mock.patch.object(VimDriverUtils, 'get_auth_state')
- @mock.patch.object(VimDriverUtils, 'update_token_cache')
- def test_token_with_tenantname(self, mock_update_token_cache, mock_get_auth_state,
- mock_get_session, mock_get_vim_info):
- '''
- test API: get token
- :param mock_update_token_cache:
- :param mock_get_auth_state:
- :param mock_get_session:
- :param mock_get_vim_info:
- :return:
- '''
-
- # mock VimDriverUtils APIs
- mock_session_specs = ["get"]
- mock_session_get_response = {'status': 200}
- mock_session = mock.Mock(name='mock_session',
- spec=mock_session_specs)
- mock_session.get.return_value = mock_session_get_response
-
- mock_get_vim_info.return_value = mock_info.MOCK_VIM_INFO
- mock_get_session.return_value = mock_session
- mock_get_auth_state.return_value = json.dumps(mock_auth_state)
- mock_update_token_cache.return_value = mock_info.MOCK_TOKEN_ID
-
- # simulate client to make the request
- token_data = {
- "auth": {
- "identity": {
- "methods": ["password"],
- "password": {
- "user": {
- "name": "demo",
- "domain": {"name": "Default"},
- "password": "demo"
- }
- }
- },
- "scope": {
- "project": {
- "domain": {"name": "Default"},
- "name": "Integration"
- }
- }
- }
- }
-
- response = self.client.post(
- "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/identity/v3/auth/tokens",
- data=json.dumps(token_data), content_type='application/json')
- self.failUnlessEqual(status.HTTP_201_CREATED,
- response.status_code)
- context = response.json()
-
- self.assertEqual(mock_info.MOCK_TOKEN_ID,
- response['X-Subject-Token'])
- self.assertIsNotNone(context['token']['catalog'])
-
- @mock.patch.object(VimDriverUtils, 'get_vim_info')
- @mock.patch.object(VimDriverUtils, 'get_session')
- @mock.patch.object(VimDriverUtils, 'get_auth_state')
- @mock.patch.object(VimDriverUtils, 'update_token_cache')
- def test_tokensV2_with_tenantname(self, mock_update_token_cache, mock_get_auth_state,
- mock_get_session, mock_get_vim_info):
- '''
- test API: get token
- :param mock_update_token_cache:
- :param mock_get_auth_state:
- :param mock_get_session:
- :param mock_get_vim_info:
- :return:
- '''
-
- # mock VimDriverUtils APIs
- mock_session_specs = ["get"]
- mock_session_get_response = {'status': 200}
- mock_session = mock.Mock(name='mock_session',
- spec=mock_session_specs)
- mock_session.get.return_value = mock_session_get_response
-
- mock_get_vim_info.return_value = mock_info.MOCK_VIM_INFO
- mock_get_session.return_value = mock_session
- mock_get_auth_state.return_value = json.dumps(mock_auth_state)
- mock_update_token_cache.return_value = mock_info.MOCK_TOKEN_ID
-
- # simulate client to make the request
- token_data = {
- "auth": {
- "tenantName": "Integration",
- "passwordCredentials": {
- "username": "demo",
- "password": "demo"
- }
- }
- }
-
- response = self.client.post(
- "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/identity/v2.0/tokens",
- data=json.dumps(token_data), content_type='application/json')
- self.failUnlessEqual(status.HTTP_200_OK,
- response.status_code)
- context = response.json()
-
- self.assertIsNotNone(context['access']['token'])
- self.assertEqual(mock_info.MOCK_TOKEN_ID,
- context['access']['token']["id"])
- self.assertIsNotNone(context['access']['serviceCatalog'])
-
- @mock.patch.object(VimDriverUtils, 'get_vim_info')
- @mock.patch.object(VimDriverUtils, 'get_session')
- @mock.patch.object(VimDriverUtils, 'get_auth_state')
- @mock.patch.object(VimDriverUtils, 'update_token_cache')
- def test_token_with_projectid(self, mock_update_token_cache, mock_get_auth_state,
- mock_get_session, mock_get_vim_info):
- '''
- test API: get token
- :param mock_update_token_cache:
- :param mock_get_auth_state:
- :param mock_get_session:
- :param mock_get_vim_info:
- :return:
- '''
-
- # mock VimDriverUtils APIs
- mock_session_specs = ["get"]
- mock_session_get_response = {'status': 200}
- mock_session = mock.Mock(name='mock_session',
- spec=mock_session_specs)
- mock_session.get.return_value = mock_session_get_response
-
- mock_get_vim_info.return_value = mock_info.MOCK_VIM_INFO
- mock_get_session.return_value = mock_session
- mock_get_auth_state.return_value = json.dumps(mock_auth_state)
- mock_update_token_cache.return_value = mock_info.MOCK_TOKEN_ID
-
- # simulate client to make the request
- token_data = {
- "auth": {
- "identity": {
- "methods": ["password"],
- "password": {
- "user": {
- "name": "demo",
- "password": "demo"
- }
- }
- },
- "scope": {
- "project": {"id": "dd327af0542e47d7853e0470fe9ad625"}
- }
- }
- }
-
- response = self.client.post(
- "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/identity/v3/auth/tokens",
- data=json.dumps(token_data), content_type='application/json')
- self.failUnlessEqual(status.HTTP_201_CREATED,
- response.status_code)
- context = response.json()
-
- self.assertEqual(mock_info.MOCK_TOKEN_ID,
- response['X-Subject-Token'])
- self.assertIsNotNone(context['token']['catalog'])
+'''
+Test proxy
+'''
# Copyright (c) 2018 Intel Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# See the License for the specific language governing permissions and
# limitations under the License.
-import copy
import json
-from django.test import Client
-import mock
-from rest_framework import status
+import copy
import unittest
+import mock
+from django.test import Client
+from rest_framework import status
from newton_base.util import VimDriverUtils
+from newton_base.tests import mock_info
+
MOCK_VIM_INFO = {
"createTime": "2017-04-01 02:22:27",
"userName": "admin",
"vendor": "WindRiver",
"version": "pike",
- "vimId": "windriver-hudson-dc_RegionOne",
+ "vimId": "pike_RegionOne",
'cloud_owner': 'windriver-hudson-dc',
'cloud_region_id': 'RegionOne',
'cloud_extra_info': '',
MOCK_INTERNAL_METADATA_CATALOG = {
"identity": {
- "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/identity",
+ "proxy_prefix":
+ "http://172.16.77.20:9003/api/multicloud-pike/v0/pike_RegionOne/identity",
"prefix": "http://128.224.180.14:5000",
"suffix": "v3"
},
"patching": {
- "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/patching",
+ "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/pike_RegionOne/patching",
"suffix": "",
"prefix": "http://128.224.180.14:15491"
},
"orchestration": {
"suffix": "v1/fcca3cc49d5e42caae15459e27103efc",
"prefix": "http://128.224.180.14:8004",
- "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/orchestration"
+ "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/pike_RegionOne/"
+ "orchestration"
},
"volume": {
"prefix": "http://128.224.180.14:8776",
"suffix": "v1/fcca3cc49d5e42caae15459e27103efc",
- "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/volume"
+ "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/pike_RegionOne/volume"
},
"metering": {
"suffix": "",
"prefix": "http://128.224.180.14:8777",
- "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/metering"
+ "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/pike_RegionOne/metering"
},
"volumev3": {
"prefix": "http://128.224.180.14:8776",
"suffix": "v3/fcca3cc49d5e42caae15459e27103efc",
- "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/volumev3"
+ "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/pike_RegionOne/volumev3"
},
"compute": {
"suffix": "v2.1/fcca3cc49d5e42caae15459e27103efc",
"prefix": "http://128.224.180.14:8774",
- "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/compute"
+ "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/pike_RegionOne/compute"
},
"platform": {
"prefix": "http://128.224.180.14:6385",
"suffix": "v1",
- "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/platform"
+ "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/pike_RegionOne/platform"
},
"nfv": {
- "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/nfv",
+ "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/pike_RegionOne/nfv",
"prefix": "http://128.224.180.14:4545",
"suffix": ""
},
"volumev2": {
- "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/volumev2",
+ "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/pike_RegionOne/volumev2",
"suffix": "v2/fcca3cc49d5e42caae15459e27103efc",
"prefix": "http://128.224.180.14:8776"
},
"image": {
"suffix": "",
"prefix": "http://128.224.180.14:9292",
- "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/image"
+ "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/pike_RegionOne/image"
},
"network": {
- "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/network",
+ "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/pike_RegionOne/network",
"prefix": "http://128.224.180.14:9696",
"suffix": ""
},
"alarming": {
"suffix": "",
"prefix": "http://128.224.180.14:8042",
- "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/alarming"
+ "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/pike_RegionOne/alarming"
},
"cloudformation": {
- "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/cloudformation",
+ "proxy_prefix": "http://172.16.77.20:9003/api/multicloud-pike/v0/pike_RegionOne/"
+ "cloudformation",
"prefix": "http://128.224.180.14:8000",
"suffix": "v1/fcca3cc49d5e42caae15459e27103efc"
}
{
"links": [
{
- "href": "http://128.224.180.14:8774/v2.1/fcca3cc49d5e42caae15459e27103efc/servers/b2581b5c-7c56-4564-819d-fe7a2ce9c261",
+ "href": "http://128.224.180.14:8774/v2.1/fcca3cc49d5e42caae15459e27103efc/"
+ "servers/b2581b5c-7c56-4564-819d-fe7a2ce9c261",
"rel": "self"
},
{
- "href": "http://128.224.180.14:8774/fcca3cc49d5e42caae15459e27103efc/servers/b2581b5c-7c56-4564-819d-fe7a2ce9c261",
+ "href": "http://128.224.180.14:8774/fcca3cc49d5e42caae15459e27103efc/"
+ "servers/b2581b5c-7c56-4564-819d-fe7a2ce9c261",
"rel": "bookmark"
}
],
"links": [
{
"rel": "self",
- "href": "http://128.224.180.14:8774/v2.1/fcca3cc49d5e42caae15459e27103efc/servers/ff7b51ca-a272-45f4-b54c-e40b8099e67d"
+ "href": "http://128.224.180.14:8774/v2.1/fcca3cc49d5e42caae15459e27103efc/"
+ "servers/ff7b51ca-a272-45f4-b54c-e40b8099e67d"
},
{
"rel": "bookmark",
- "href": "http://128.224.180.14:8774/fcca3cc49d5e42caae15459e27103efc/servers/ff7b51ca-a272-45f4-b54c-e40b8099e67d"
+ "href": "http://128.224.180.14:8774/fcca3cc49d5e42caae15459e27103efc/"
+ "servers/ff7b51ca-a272-45f4-b54c-e40b8099e67d"
}
]
}
"personality": [
{
"path": "/etc/banner.txt",
- "contents": "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA=="
+ "contents": "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp "
+ "dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k "
+ "IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs "
+ "c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g "
+ "QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo "
+ "ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv "
+ "dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy "
+ "c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 "
+ "b25zLiINCg0KLVJpY2hhcmQgQmFjaA=="
}
],
"security_groups": [
"id": "f5dc173b-6804-445a-a6d8-c705dad5b5eb",
"links": [
{
- "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/servers/f5dc173b-6804-445a-a6d8-c705dad5b5eb",
+ "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/"
+ "servers/f5dc173b-6804-445a-a6d8-c705dad5b5eb",
"rel": "self"
},
{
- "href": "http://openstack.example.com/6f70656e737461636b20342065766572/servers/f5dc173b-6804-445a-a6d8-c705dad5b5eb",
+ "href": "http://openstack.example.com/6f70656e737461636b20342065766572/"
+ "servers/f5dc173b-6804-445a-a6d8-c705dad5b5eb",
"rel": "bookmark"
}
],
}
+class TestIdentityService(unittest.TestCase):
+ def setUp(self):
+ self.client = Client()
+
+ @mock.patch.object(VimDriverUtils, 'get_vim_info')
+ @mock.patch.object(VimDriverUtils, 'get_session')
+ @mock.patch.object(VimDriverUtils, 'get_auth_state')
+ @mock.patch.object(VimDriverUtils, 'update_token_cache')
+ def test_token(self, mock_update_token_cache, mock_get_auth_state,
+ mock_get_session, mock_get_vim_info):
+ '''
+ test API: get token
+ :param mock_update_token_cache:
+ :param mock_get_auth_state:
+ :param mock_get_session:
+ :param mock_get_vim_info:
+ :return:
+ '''
+
+ # mock VimDriverUtils APIs
+ mock_session_specs = ["get"]
+ mock_session_get_response = {'status': 200}
+ mock_session = mock.Mock(name='mock_session', spec=mock_session_specs)
+ mock_session.get.return_value = mock_session_get_response
+
+ mock_get_vim_info.return_value = MOCK_VIM_INFO
+ mock_get_session.return_value = mock_session
+ mock_get_auth_state.return_value = json.dumps(MOCK_AUTH_STATE)
+
+ mock_update_token_cache.return_value = MOCK_TOKEN_ID
+
+ # simulate client to make the request
+ data = {}
+ response = self.client.post(
+ "/api/multicloud-pike/v0/pike_RegionOne/identity/v3/auth/tokens",
+ data=data, format='json')
+ self.assertEqual(status.HTTP_201_CREATED, response.status_code)
+ context = response.json()
+
+ self.assertTrue(response['X-Subject-Token'] == MOCK_TOKEN_ID)
+ self.assertTrue(context['token']['catalog'] is not None)
+
+ @mock.patch.object(VimDriverUtils, 'get_vim_info')
+ @mock.patch.object(VimDriverUtils, 'get_session')
+ @mock.patch.object(VimDriverUtils, 'get_auth_state')
+ @mock.patch.object(VimDriverUtils, 'update_token_cache')
+ def test_tokensV2(self, mock_update_token_cache, mock_get_auth_state,
+ mock_get_session, mock_get_vim_info):
+ '''
+ test API: get token
+ :param mock_update_token_cache:
+ :param mock_get_auth_state:
+ :param mock_get_session:
+ :param mock_get_vim_info:
+ :return:
+ '''
+
+ # mock VimDriverUtils APIs
+ mock_session_specs = ["get"]
+ mock_session_get_response = {'status': 200}
+ mock_session = mock.Mock(name='mock_session',
+ spec=mock_session_specs)
+ mock_session.get.return_value = mock_session_get_response
+
+ mock_get_vim_info.return_value = mock_info.MOCK_VIM_INFO
+ mock_get_session.return_value = mock_session
+ mock_get_auth_state.return_value = json.dumps(MOCK_AUTH_STATE)
+ mock_update_token_cache.return_value = mock_info.MOCK_TOKEN_ID
+
+ # simulate client to make the request
+ data = {}
+ response = self.client.post(
+ "/api/multicloud-pike/v0/pike_RegionOne/identity/v2.0/tokens",
+ data=data, format='json')
+ self.assertEqual(status.HTTP_200_OK,
+ response.status_code)
+ context = response.json()
+
+ self.assertIsNotNone(context['access']['token'])
+ self.assertEqual(mock_info.MOCK_TOKEN_ID,
+ context['access']['token']["id"])
+ self.assertIsNotNone(context['access']['serviceCatalog'])
+
+ @mock.patch.object(VimDriverUtils, 'get_vim_info')
+ @mock.patch.object(VimDriverUtils, 'get_session')
+ @mock.patch.object(VimDriverUtils, 'get_auth_state')
+ @mock.patch.object(VimDriverUtils, 'update_token_cache')
+ def test_token_with_tenantname(self, mock_update_token_cache, mock_get_auth_state,
+ mock_get_session, mock_get_vim_info):
+ '''
+ test API: get token
+ :param mock_update_token_cache:
+ :param mock_get_auth_state:
+ :param mock_get_session:
+ :param mock_get_vim_info:
+ :return:
+ '''
+
+ # mock VimDriverUtils APIs
+ mock_session_specs = ["get"]
+ mock_session_get_response = {'status': 200}
+ mock_session = mock.Mock(name='mock_session',
+ spec=mock_session_specs)
+ mock_session.get.return_value = mock_session_get_response
+
+ mock_get_vim_info.return_value = mock_info.MOCK_VIM_INFO
+ mock_get_session.return_value = mock_session
+ mock_get_auth_state.return_value = json.dumps(MOCK_AUTH_STATE)
+ mock_update_token_cache.return_value = mock_info.MOCK_TOKEN_ID
+
+ # simulate client to make the request
+ token_data = {
+ "auth": {
+ "identity": {
+ "methods": ["password"],
+ "password": {
+ "user": {
+ "name": "demo",
+ "domain": {"name": "Default"},
+ "password": "demo"
+ }
+ }
+ },
+ "scope": {
+ "project": {
+ "domain": {"name": "Default"},
+ "name": "Integration"
+ }
+ }
+ }
+ }
+
+ response = self.client.post(
+ "/api/multicloud-pike/v0/pike_RegionOne/identity/v3/auth/tokens",
+ data=json.dumps(token_data), content_type='application/json')
+ self.assertEqual(status.HTTP_201_CREATED,
+ response.status_code)
+ context = response.json()
+
+ self.assertEqual(mock_info.MOCK_TOKEN_ID,
+ response['X-Subject-Token'])
+ self.assertIsNotNone(context['token']['catalog'])
+
+ @mock.patch.object(VimDriverUtils, 'get_vim_info')
+ @mock.patch.object(VimDriverUtils, 'get_session')
+ @mock.patch.object(VimDriverUtils, 'get_auth_state')
+ @mock.patch.object(VimDriverUtils, 'update_token_cache')
+ def test_tokensV2_with_tenantname(self, mock_update_token_cache, mock_get_auth_state,
+ mock_get_session, mock_get_vim_info):
+ '''
+ test API: get token
+ :param mock_update_token_cache:
+ :param mock_get_auth_state:
+ :param mock_get_session:
+ :param mock_get_vim_info:
+ :return:
+ '''
+
+ # mock VimDriverUtils APIs
+ mock_session_specs = ["get"]
+ mock_session_get_response = {'status': 200}
+ mock_session = mock.Mock(name='mock_session',
+ spec=mock_session_specs)
+ mock_session.get.return_value = mock_session_get_response
+
+ mock_get_vim_info.return_value = mock_info.MOCK_VIM_INFO
+ mock_get_session.return_value = mock_session
+ mock_get_auth_state.return_value = json.dumps(MOCK_AUTH_STATE)
+ mock_update_token_cache.return_value = mock_info.MOCK_TOKEN_ID
+
+ # simulate client to make the request
+ token_data = {
+ "auth": {
+ "tenantName": "Integration",
+ "passwordCredentials": {
+ "username": "demo",
+ "password": "demo"
+ }
+ }
+ }
+
+ response = self.client.post(
+ "/api/multicloud-pike/v0/pike_RegionOne/identity/v2.0/tokens",
+ data=json.dumps(token_data), content_type='application/json')
+ self.assertEqual(status.HTTP_200_OK,
+ response.status_code)
+ context = response.json()
+
+ self.assertIsNotNone(context['access']['token'])
+ self.assertEqual(mock_info.MOCK_TOKEN_ID,
+ context['access']['token']["id"])
+ self.assertIsNotNone(context['access']['serviceCatalog'])
+
+ @mock.patch.object(VimDriverUtils, 'get_vim_info')
+ @mock.patch.object(VimDriverUtils, 'get_session')
+ @mock.patch.object(VimDriverUtils, 'get_auth_state')
+ @mock.patch.object(VimDriverUtils, 'update_token_cache')
+ def test_token_with_projectid(self, mock_update_token_cache, mock_get_auth_state,
+ mock_get_session, mock_get_vim_info):
+ '''
+ test API: get token
+ :param mock_update_token_cache:
+ :param mock_get_auth_state:
+ :param mock_get_session:
+ :param mock_get_vim_info:
+ :return:
+ '''
+
+ # mock VimDriverUtils APIs
+ mock_session_specs = ["get"]
+ mock_session_get_response = {'status': 200}
+ mock_session = mock.Mock(name='mock_session',
+ spec=mock_session_specs)
+ mock_session.get.return_value = mock_session_get_response
+
+ mock_get_vim_info.return_value = mock_info.MOCK_VIM_INFO
+ mock_get_session.return_value = mock_session
+ mock_get_auth_state.return_value = json.dumps(MOCK_AUTH_STATE)
+ mock_update_token_cache.return_value = mock_info.MOCK_TOKEN_ID
+
+ # simulate client to make the request
+ token_data = {
+ "auth": {
+ "identity": {
+ "methods": ["password"],
+ "password": {
+ "user": {
+ "name": "demo",
+ "password": "demo"
+ }
+ }
+ },
+ "scope": {
+ "project": {"id": "dd327af0542e47d7853e0470fe9ad625"}
+ }
+ }
+ }
+
+ response = self.client.post(
+ "/api/multicloud-pike/v0/pike_RegionOne/identity/v3/auth/tokens",
+ data=json.dumps(token_data), content_type='application/json')
+ self.assertEqual(status.HTTP_201_CREATED,
+ response.status_code)
+ context = response.json()
+
+ self.assertEqual(mock_info.MOCK_TOKEN_ID,
+ response['X-Subject-Token'])
+ self.assertIsNotNone(context['token']['catalog'])
+
+
class MockResponse(object):
status_code = 200
content = ''
mock_get_token_cache.return_value = (json.dumps(MOCK_AUTH_STATE),
json.dumps(MOCK_INTERNAL_METADATA_CATALOG))
response = self.client.head(
- "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/compute/v2.1/fcca3cc49d5e42caae15459e27103efc/servers",
+ "/api/multicloud-pike/v0/pike_RegionOne/compute/v2.1/"
+ "fcca3cc49d5e42caae15459e27103efc/servers",
{}, HTTP_X_AUTH_TOKEN=MOCK_TOKEN_ID)
- self.assertEquals(status.HTTP_200_OK, response.status_code)
+ self.assertEqual(status.HTTP_200_OK, response.status_code)
def test_unauthorized_access(self):
response = self.client.get(
- "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/compute/v2.1/fcca3cc49d5e42caae15459e27103efc/servers")
- self.assertEquals(status.HTTP_403_FORBIDDEN, response.status_code)
+ "/api/multicloud-pike/v0/pike_RegionOne/compute/v2.1/"
+ "fcca3cc49d5e42caae15459e27103efc/servers")
+ self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code)
@mock.patch.object(VimDriverUtils, 'get_vim_info')
def test_expired_auth_token(self, mock_get_vim_info):
mock_get_vim_info.return_value = MOCK_VIM_INFO
- response = self.client.get("/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/compute/v2.1/fcca3cc49d5e42caae15459e27103efc/servers",
+ response = self.client.get("/api/multicloud-pike/v0/pike_RegionOne/compute/v2.1/"
+ "fcca3cc49d5e42caae15459e27103efc/servers",
{}, HTTP_X_AUTH_TOKEN=MOCK_TOKEN_ID)
- self.assertEquals(status.HTTP_403_FORBIDDEN, response.status_code)
+ self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code)
@mock.patch.object(VimDriverUtils, 'get_token_cache')
@mock.patch.object(VimDriverUtils, 'get_vim_info')
mock_get_vim_info.return_value = MOCK_VIM_INFO
mock_get_token_cache.return_value = (json.dumps(MOCK_AUTH_STATE), {})
servicetype = "compute"
- base_url = "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/"
+ base_url = "/api/multicloud-pike/v0/pike_RegionOne/"
server_url = "/v2.1/fcca3cc49d5e42caae15459e27103efc/servers"
url = (base_url + servicetype + server_url)
response = self.client.get(url, {}, HTTP_X_AUTH_TOKEN=MOCK_TOKEN_ID)
- self.assertEquals(status.HTTP_500_INTERNAL_SERVER_ERROR, response.status_code)
+ self.assertEqual(status.HTTP_500_INTERNAL_SERVER_ERROR, response.status_code)
metadata_catalog = copy.deepcopy(MOCK_INTERNAL_METADATA_CATALOG)
metadata_catalog[servicetype] = None
- mock_get_token_cache.return_value = (json.dumps(MOCK_AUTH_STATE), json.dumps(metadata_catalog))
+ mock_get_token_cache.return_value = (json.dumps(MOCK_AUTH_STATE),
+ json.dumps(metadata_catalog))
response = self.client.get(url, {}, HTTP_X_AUTH_TOKEN=MOCK_TOKEN_ID)
- self.assertEquals(status.HTTP_500_INTERNAL_SERVER_ERROR, response.status_code)
+ self.assertEqual(status.HTTP_500_INTERNAL_SERVER_ERROR, response.status_code)
metadata_catalog = copy.deepcopy(MOCK_INTERNAL_METADATA_CATALOG)
metadata_catalog[servicetype]['prefix'] = None
metadata_catalog[servicetype]['proxy_prefix'] = None
- mock_get_token_cache.return_value = (json.dumps(MOCK_AUTH_STATE), json.dumps(metadata_catalog))
+ mock_get_token_cache.return_value = (json.dumps(MOCK_AUTH_STATE),
+ json.dumps(metadata_catalog))
response = self.client.get(url, {}, HTTP_X_AUTH_TOKEN=MOCK_TOKEN_ID)
- self.assertEquals(status.HTTP_500_INTERNAL_SERVER_ERROR, response.status_code)
+ self.assertEqual(status.HTTP_500_INTERNAL_SERVER_ERROR, response.status_code)
@mock.patch.object(VimDriverUtils, 'get_vim_info')
@mock.patch.object(VimDriverUtils, 'get_session')
@mock.patch.object(VimDriverUtils, 'get_auth_state')
@mock.patch.object(VimDriverUtils, 'update_token_cache')
@mock.patch.object(VimDriverUtils, 'get_token_cache')
- def test_crud_resources(self, mock_get_token_cache, mock_update_token_cache, mock_get_auth_state, mock_get_session, mock_get_vim_info):
+ def test_crud_resources(self, mock_get_token_cache, mock_update_token_cache,
+ mock_get_auth_state, mock_get_session, mock_get_vim_info):
'''
Test service proxy API: GET
mock_get_session.return_value = mock_session
mock_get_auth_state.return_value = json.dumps(MOCK_AUTH_STATE)
mock_update_token_cache.return_value = MOCK_TOKEN_ID
- mock_get_token_cache.return_value = (json.dumps(MOCK_AUTH_STATE), json.dumps(MOCK_INTERNAL_METADATA_CATALOG))
+ mock_get_token_cache.return_value = (json.dumps(MOCK_AUTH_STATE),
+ json.dumps(MOCK_INTERNAL_METADATA_CATALOG))
# Create resource
response = self.client.post(
- "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/compute/v2.1/fcca3cc49d5e42caae15459e27103efc/servers",
+ "/api/multicloud-pike/v0/pike_RegionOne/compute/v2.1/"
+ "fcca3cc49d5e42caae15459e27103efc/servers",
MOCK_POST_SERVER_REQUEST, HTTP_X_AUTH_TOKEN=MOCK_TOKEN_ID)
- self.assertEquals(status.HTTP_202_ACCEPTED, response.status_code)
+ self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code)
context = response.json()
- self.assertEquals(MOCK_TOKEN_ID, response['X-Subject-Token'])
+ self.assertEqual(MOCK_TOKEN_ID, response['X-Subject-Token'])
self.assertIsNotNone(context['server'])
# Retrieve resource
response = self.client.get(
- "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/compute/v2.1/fcca3cc49d5e42caae15459e27103efc/servers",
+ "/api/multicloud-pike/v0/pike_RegionOne/compute/v2.1/"
+ "fcca3cc49d5e42caae15459e27103efc/servers",
{}, HTTP_X_AUTH_TOKEN=MOCK_TOKEN_ID)
- self.assertEquals(status.HTTP_200_OK, response.status_code)
+ self.assertEqual(status.HTTP_200_OK, response.status_code)
context = response.json()
- self.assertEquals(MOCK_TOKEN_ID, response['X-Subject-Token'])
+ self.assertEqual(MOCK_TOKEN_ID, response['X-Subject-Token'])
self.assertIsNotNone(context['servers'])
# Update resource
response = self.client.get(
- "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/compute/v2.1/fcca3cc49d5e42caae15459e27103efc/servers",
+ "/api/multicloud-pike/v0/pike_RegionOne/compute/v2.1/"
+ "fcca3cc49d5e42caae15459e27103efc/servers",
{}, HTTP_X_AUTH_TOKEN=MOCK_TOKEN_ID)
- self.assertEquals(status.HTTP_200_OK, response.status_code)
+ self.assertEqual(status.HTTP_200_OK, response.status_code)
context = response.json()
- self.assertEquals(MOCK_TOKEN_ID, response['X-Subject-Token'])
+ self.assertEqual(MOCK_TOKEN_ID, response['X-Subject-Token'])
self.assertIsNotNone(context['servers'])
# simulate client to make the request
response = self.client.delete(
- "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/compute/v2.1/fcca3cc49d5e42caae15459e27103efc/servers/324dfb7d-f4a9-419a-9a19-237df04b443b",
+ "/api/multicloud-pike/v0/pike_RegionOne/compute/v2.1/"
+ "fcca3cc49d5e42caae15459e27103efc/servers/324dfb7d-f4a9-419a-9a19-237df04b443b",
HTTP_X_AUTH_TOKEN=MOCK_TOKEN_ID)
- self.assertEquals(status.HTTP_204_NO_CONTENT, response.status_code)
- self.assertEquals(MOCK_TOKEN_ID, response['X-Subject-Token'])
+ self.assertEqual(status.HTTP_204_NO_CONTENT, response.status_code)
+ self.assertEqual(MOCK_TOKEN_ID, response['X-Subject-Token'])
from django.conf.urls import url
from rest_framework.urlpatterns import format_suffix_patterns
-from pike.proxy.views import identityV3
+from pike.proxy.views import identity_v3
from pike.proxy.views import services
from newton_base.proxy import dnsaasdelegate
-urlpatterns = [
+URLPATTERNS = [
url(r'^identity/v3/auth/tokens/?$',
- identityV3.Tokens.as_view()),
+ identity_v3.Tokens.as_view()),
url(r'^identity/v3/?$',
- identityV3.Tokens.as_view()),
+ identity_v3.Tokens.as_view()),
url(r'^identity/v2.0/?',
- identityV3.TokensV2.as_view()),
+ identity_v3.TokensV2.as_view()),
url(r'^identity/v2.0/tokens/?$',
- identityV3.TokensV2.as_view()),
+ identity_v3.TokensV2.as_view()),
url(r'^identity/v2.0/tenants/?$',
services.GetTenants.as_view()),
url(r'dns-delegate/(?P<requri>[0-9a-zA-Z./_-]*)$',
services.Services.as_view()),
]
-urlpatterns = format_suffix_patterns(urlpatterns)
+urlpatterns = format_suffix_patterns(URLPATTERNS)
from django.conf.urls import url
from rest_framework.urlpatterns import format_suffix_patterns
-from pike.proxy.views import identityV3
+from pike.proxy.views import identity_v3
from pike.proxy.views import services
from newton_base.proxy import dnsaasdelegate
-urlpatterns = [
+URLPATTERNS = [
url(r'^identity/v3/auth/tokens/?$',
- identityV3.APIv1Tokens.as_view()),
+ identity_v3.APIv1Tokens.as_view()),
url(r'^identity/v3/?$',
- identityV3.APIv1Tokens.as_view()),
+ identity_v3.APIv1Tokens.as_view()),
url(r'^identity/v2.0/?$',
- identityV3.APIv1TokensV2.as_view()),
+ identity_v3.APIv1TokensV2.as_view()),
url(r'^identity/v2.0/tokens/?$',
- identityV3.APIv1TokensV2.as_view()),
+ identity_v3.APIv1TokensV2.as_view()),
url(r'^identity/v2.0/tenants/?$',
services.APIv1GetTenants.as_view()),
url(r'dns-delegate/(?P<requri>[0-9a-zA-Z./_-]*)$',
services.APIv1Services.as_view()),
]
-urlpatterns = format_suffix_patterns(urlpatterns)
+urlpatterns = format_suffix_patterns(URLPATTERNS)
+'''
+identity v3
+'''
# Copyright (c) 2018 Intel Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
from newton_base.proxy import identityV3 as newton_identityV3
from common.msapi import extsys
-logger = logging.getLogger(__name__)
+LOGGER = logging.getLogger(__name__)
# DEBUG=True
def __init__(self):
self.proxy_prefix = settings.MULTICLOUD_PREFIX
- self._logger = logger
+ self._logger = LOGGER
class TokensV2(newton_identityV3.TokensV2):
def __init__(self):
self.proxy_prefix = settings.MULTICLOUD_PREFIX
- self._logger = logger
+ self._logger = LOGGER
class APIv1Tokens(Tokens):
# self._logger = logger
def get(self, request, cloud_owner="", cloud_region_id=""):
- self._logger.info("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
+ self._logger.debug("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
# self._logger.debug("META> %s" % request.META)
# self._logger.debug("data> %s" % request.data)
return super(APIv1Tokens, self).get(request, vimid)
def post(self, request, cloud_owner="", cloud_region_id=""):
- self._logger.info("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
+ self._logger.debug("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
# self._logger.debug("META> %s" % request.META)
# self._logger.debug("data> %s" % request.data)
class APIv1TokensV2(TokensV2):
+ '''
+ API v1 Tokens V2
+ '''
+
def __init__(self):
super(APIv1TokensV2, self).__init__()
self.proxy_prefix = settings.MULTICLOUD_API_V1_PREFIX
# self._logger = logger
def get(self, request, cloud_owner="", cloud_region_id=""):
- self._logger.info("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
+ self._logger.debug("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
# self._logger.debug("META> %s" % request.META)
# self._logger.debug("data> %s" % request.data)
return super(APIv1TokensV2, self).get(request, vimid)
def post(self, request, cloud_owner="", cloud_region_id=""):
- self._logger.info("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
+ self._logger.debug("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
# self._logger.debug("META> %s" % request.META)
# self._logger.debug("data> %s" % request.data)
+'''
+services
+'''
# Copyright (c) 2018 Intel Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
from newton_base.proxy import services as newton_services
from common.msapi import extsys
-logger = logging.getLogger(__name__)
+LOGGER = logging.getLogger(__name__)
# DEBUG=True
class Services(newton_services.Services):
+ '''
+ class services
+ '''
def __init__(self):
- self._logger = logger
+ self._logger = LOGGER
class GetTenants(newton_services.GetTenants):
'''
def __init__(self):
- self._logger = logger
+ self._logger = LOGGER
def get(self, request, vimid="", servicetype="identity", requri='v3/projects'):
self._logger.debug("GetTenants--get::META> %s" % request.META)
def __init__(self):
super(APIv1Services, self).__init__()
- # self._logger = logger
+ # self._logger = loggier
def head(self, request, cloud_owner="", cloud_region_id="", servicetype="", requri=""):
- self._logger.info("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
+ self._logger.debug("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
# self._logger.info("servicetype, requri> %s,%s" % (servicetype, requri))
# self._logger.debug("META, data> %s , %s" % (request.META, request.data))
return super(APIv1Services, self).head(request, vimid, servicetype, requri)
def get(self, request, cloud_owner="", cloud_region_id="", servicetype="", requri=""):
- self._logger.info("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
+ self._logger.debug("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
vimid = extsys.encode_vim_id(cloud_owner, cloud_region_id)
return super(APIv1Services, self).get(request, vimid, servicetype, requri)
def post(self, request, cloud_owner="", cloud_region_id="", servicetype="", requri=""):
- self._logger.info("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
+ self._logger.debug("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
vimid = extsys.encode_vim_id(cloud_owner, cloud_region_id)
return super(APIv1Services, self).post(request, vimid, servicetype, requri)
def put(self, request, cloud_owner="", cloud_region_id="", servicetype="", requri=""):
- self._logger.info("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
+ self._logger.debug("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
vimid = extsys.encode_vim_id(cloud_owner, cloud_region_id)
return super(APIv1Services, self).put(request, vimid, servicetype, requri)
def patch(self, request, cloud_owner="", cloud_region_id="", servicetype="", requri=""):
- self._logger.info("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
+ self._logger.debug("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
vimid = extsys.encode_vim_id(cloud_owner, cloud_region_id)
return super(APIv1Services, self).patch(request, vimid, servicetype, requri)
def delete(self, request, cloud_owner="", cloud_region_id="", servicetype="", requri=""):
- self._logger.info("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
+ self._logger.debug("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
vimid = extsys.encode_vim_id(cloud_owner, cloud_region_id)
return super(APIv1Services, self).delete(request, vimid, servicetype, requri)
# self._logger = logger
def head(self, request, cloud_owner="", cloud_region_id="", servicetype="identity", requri=""):
- self._logger.info("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
+ self._logger.debug("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
# self._logger.info("servicetype, requri> %s,%s" % (servicetype, requri))
# self._logger.debug("META, data> %s , %s" % (request.META, request.data))
vimid = extsys.encode_vim_id(cloud_owner, cloud_region_id)
return super(APIv1GetTenants, self).head(request, vimid, servicetype, requri)
- def get(self, request, cloud_owner="", cloud_region_id="", servicetype="identity", requri='v3/projects'):
- self._logger.info("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
+ def get(self, request, cloud_owner="", cloud_region_id="", servicetype="identity",
+ requri='v3/projects'):
+ self._logger.debug("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
# self._logger.debug("with servicetype, requri> %s,%s" % (servicetype, requri))
# self._logger.debug("with META> %s" % request.META)
return super(APIv1GetTenants, self).get(request, vimid, servicetype, requri)
def post(self, request, cloud_owner="", cloud_region_id="", servicetype="identity", requri=""):
- self._logger.info("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
+ self._logger.debug("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
# self._logger.debug("with servicetype, requri> %s,%s" % (servicetype, requri))
# self._logger.debug("with META> %s" % request.META)
# self._logger.debug("with data> %s" % request.data)
return super(APIv1GetTenants, self).post(request, vimid, servicetype, requri)
def put(self, request, cloud_owner="", cloud_region_id="", servicetype="identity", requri=""):
- self._logger.info("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
+ self._logger.debug("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
vimid = extsys.encode_vim_id(cloud_owner, cloud_region_id)
return super(APIv1GetTenants, self).put(request, vimid, servicetype, requri)
def patch(self, request, cloud_owner="", cloud_region_id="", servicetype="identity", requri=""):
- self._logger.info("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
+ self._logger.debug("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
vimid = extsys.encode_vim_id(cloud_owner, cloud_region_id)
return super(APIv1GetTenants, self).patch(request, vimid, servicetype, requri)
- def delete(self, request, cloud_owner="", cloud_region_id="", servicetype="identity", requri=""):
- self._logger.info("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
+ def delete(self, request, cloud_owner="", cloud_region_id="", servicetype="identity",
+ requri=""):
+ self._logger.debug("cloud_owner,cloud_region_id: %s,%s" % (cloud_owner, cloud_region_id))
vimid = extsys.encode_vim_id(cloud_owner, cloud_region_id)
return super(APIv1GetTenants, self).delete(request, vimid, servicetype, requri)
+'''
+test registration
+'''
# Copyright (c) 2018 Intel Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
}
# HPA UT2: CPU-Topology
-MOCK_GET_HPA_FLAVOR_onap_mini_EXTRA_SPECS2_RESPONSE = {
+MOCK_GET_HPA_FLAVOR_ONAP_MINI_EXTRA_SPECS2_RESPONSE = {
"extra_specs": {
"aggregate_instance_extra_specs:storage": "local_image",
"capabilities:cpu_info:model": "Haswell",
}
# HPA UT3: mem_page_size
-MOCK_GET_HPA_FLAVOR_onap_mini_EXTRA_SPECS3_RESPONSE = {
+MOCK_GET_HPA_FLAVOR_ONAP_MINI_EXTRA_SPECS3_RESPONSE = {
"extra_specs": {
"aggregate_instance_extra_specs:storage": "local_image",
"capabilities:cpu_info:model": "Haswell",
}
# HPA UT4: numa_nodes
-MOCK_GET_HPA_FLAVOR_onap_mini_EXTRA_SPECS4_RESPONSE = {
+MOCK_GET_HPA_FLAVOR_ONAP_MINI_EXTRA_SPECS4_RESPONSE = {
"extra_specs": {
"aggregate_instance_extra_specs:storage": "local_image",
"capabilities:cpu_info:model": "Haswell",
}
# HPA UT5: instruction set
-MOCK_GET_HPA_FLAVOR_onap_mini_EXTRA_SPECS5_RESPONSE = {
+MOCK_GET_HPA_FLAVOR_ONAP_MINI_EXTRA_SPECS5_RESPONSE = {
"extra_specs": {
"aggregate_instance_extra_specs:storage": "local_image",
"capabilities:cpu_info:model": "Haswell",
}
# HPA UT6: pci passthrough
-MOCK_GET_HPA_FLAVOR_onap_mini_EXTRA_SPECS6_RESPONSE = {
+MOCK_GET_HPA_FLAVOR_ONAP_MINI_EXTRA_SPECS6_RESPONSE = {
"extra_specs": {
"aggregate_instance_extra_specs:storage": "local_image",
"capabilities:cpu_info:model": "Haswell",
}
}
-MOCK_GET_HPA_FLAVOR_onap_mini_EXTRA_SPECS_RESPONSE = {
+MOCK_GET_HPA_FLAVOR_ONAP_MINI_EXTRA_SPECS_RESPONSE = {
"extra_specs": {
"aggregate_instance_extra_specs:storage": "local_image",
"capabilities:cpu_info:model": "Haswell",
class TestRegistration(test_base.TestRequest):
+ '''
+ test registration
+ '''
def setUp(self):
super(TestRegistration, self).setUp()
]
})
- response = self.client.post((
- "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/"
- "registry"), TEST_REGISTER_ENDPOINT_REQUEST,
+ response = self.client.post(
+ "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/registry",
+ TEST_REGISTER_ENDPOINT_REQUEST,
HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
- self.assertEquals(status.HTTP_202_ACCEPTED,
- response.status_code)
+ self.assertEqual(status.HTTP_202_ACCEPTED,
+ response.status_code)
# @mock.patch.object(VimDriverUtils, 'delete_vim_info')
# def test_unregister_endpoint_successfully(
self, mock_delete_vim_info):
mock_delete_vim_info.return_value = 1
- response = self.client.delete((
- "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/"
- "registry"), "{}", content_type="application/json",
+ response = self.client.delete(
+ "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/registry",
+ "{}", content_type="application/json",
HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
- self.assertEquals(status.HTTP_204_NO_CONTENT,
- response.status_code)
+ self.assertEqual(status.HTTP_204_NO_CONTENT,
+ response.status_code)
@mock.patch.object(VimDriverUtils, 'get_session')
@mock.patch.object(VimDriverUtils, 'get_vim_info')
"side_effect": [
self._get_mock_response(MOCK_GET_TENANT_RESPONSE),
self._get_mock_response(MOCK_GET_HPA_FLAVOR_LIST1_RESPONSE),
- self._get_mock_response(MOCK_GET_HPA_FLAVOR_onap_mini_EXTRA_SPECS_RESPONSE),
+ self._get_mock_response(MOCK_GET_HPA_FLAVOR_ONAP_MINI_EXTRA_SPECS_RESPONSE),
self._get_mock_response(MOCK_GET_IMAGE_RESPONSE),
self._get_mock_response(),
self._get_mock_response(MOCK_GET_AZ_RESPONSE),
]
})
- response = self.client.post((
- "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/"
- "registry"), TEST_REGISTER_ENDPOINT_REQUEST,
+ response = self.client.post(
+ "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/registry",
+ TEST_REGISTER_ENDPOINT_REQUEST,
HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
- self.assertEquals(status.HTTP_202_ACCEPTED, response.status_code)
+ self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code)
@mock.patch.object(VimDriverUtils, 'get_session')
@mock.patch.object(VimDriverUtils, 'get_vim_info')
"side_effect": [
self._get_mock_response(MOCK_GET_TENANT_RESPONSE),
self._get_mock_response(MOCK_GET_HPA_FLAVOR_LIST1_RESPONSE),
- self._get_mock_response(MOCK_GET_HPA_FLAVOR_onap_mini_EXTRA_SPECS2_RESPONSE),
+ self._get_mock_response(MOCK_GET_HPA_FLAVOR_ONAP_MINI_EXTRA_SPECS2_RESPONSE),
self._get_mock_response(MOCK_GET_IMAGE_RESPONSE),
self._get_mock_response(),
self._get_mock_response(MOCK_GET_AZ_RESPONSE),
]
})
- response = self.client.post((
- "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/"
- "registry"), TEST_REGISTER_ENDPOINT_REQUEST,
+ response = self.client.post(
+ "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/registry",
+ TEST_REGISTER_ENDPOINT_REQUEST,
HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
- self.assertEquals(status.HTTP_202_ACCEPTED, response.status_code)
+ self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code)
@mock.patch.object(VimDriverUtils, 'get_session')
@mock.patch.object(VimDriverUtils, 'get_vim_info')
"side_effect": [
self._get_mock_response(MOCK_GET_TENANT_RESPONSE),
self._get_mock_response(MOCK_GET_HPA_FLAVOR_LIST1_RESPONSE),
- self._get_mock_response(MOCK_GET_HPA_FLAVOR_onap_mini_EXTRA_SPECS3_RESPONSE),
+ self._get_mock_response(MOCK_GET_HPA_FLAVOR_ONAP_MINI_EXTRA_SPECS3_RESPONSE),
self._get_mock_response(MOCK_GET_IMAGE_RESPONSE),
self._get_mock_response(),
self._get_mock_response(MOCK_GET_AZ_RESPONSE),
]
})
- response = self.client.post((
- "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/"
- "registry"), TEST_REGISTER_ENDPOINT_REQUEST,
+ response = self.client.post(
+ "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/registry",
+ TEST_REGISTER_ENDPOINT_REQUEST,
HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
- self.assertEquals(status.HTTP_202_ACCEPTED, response.status_code)
+ self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code)
@mock.patch.object(VimDriverUtils, 'get_session')
@mock.patch.object(VimDriverUtils, 'get_vim_info')
"side_effect": [
self._get_mock_response(MOCK_GET_TENANT_RESPONSE),
self._get_mock_response(MOCK_GET_HPA_FLAVOR_LIST1_RESPONSE),
- self._get_mock_response(MOCK_GET_HPA_FLAVOR_onap_mini_EXTRA_SPECS4_RESPONSE),
+ self._get_mock_response(MOCK_GET_HPA_FLAVOR_ONAP_MINI_EXTRA_SPECS4_RESPONSE),
self._get_mock_response(MOCK_GET_IMAGE_RESPONSE),
self._get_mock_response(),
self._get_mock_response(MOCK_GET_AZ_RESPONSE),
]
})
- response = self.client.post((
- "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/"
- "registry"), TEST_REGISTER_ENDPOINT_REQUEST,
+ response = self.client.post(
+ "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/registry",
+ TEST_REGISTER_ENDPOINT_REQUEST,
HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
- self.assertEquals(status.HTTP_202_ACCEPTED, response.status_code)
+ self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code)
@mock.patch.object(VimDriverUtils, 'get_session')
@mock.patch.object(VimDriverUtils, 'get_vim_info')
"side_effect": [
self._get_mock_response(MOCK_GET_TENANT_RESPONSE),
self._get_mock_response(MOCK_GET_HPA_FLAVOR_LIST1_RESPONSE),
- self._get_mock_response(MOCK_GET_HPA_FLAVOR_onap_mini_EXTRA_SPECS5_RESPONSE),
+ self._get_mock_response(MOCK_GET_HPA_FLAVOR_ONAP_MINI_EXTRA_SPECS5_RESPONSE),
self._get_mock_response(MOCK_GET_IMAGE_RESPONSE),
self._get_mock_response(),
self._get_mock_response(MOCK_GET_AZ_RESPONSE),
]
})
- response = self.client.post((
- "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/"
- "registry"), TEST_REGISTER_ENDPOINT_REQUEST,
+ response = self.client.post(
+ "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/registry",
+ TEST_REGISTER_ENDPOINT_REQUEST,
HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
- self.assertEquals(status.HTTP_202_ACCEPTED, response.status_code)
+ self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code)
@mock.patch.object(VimDriverUtils, 'get_session')
@mock.patch.object(VimDriverUtils, 'get_vim_info')
"side_effect": [
self._get_mock_response(MOCK_GET_TENANT_RESPONSE),
self._get_mock_response(MOCK_GET_HPA_FLAVOR_LIST1_RESPONSE),
- self._get_mock_response(MOCK_GET_HPA_FLAVOR_onap_mini_EXTRA_SPECS6_RESPONSE),
+ self._get_mock_response(MOCK_GET_HPA_FLAVOR_ONAP_MINI_EXTRA_SPECS6_RESPONSE),
self._get_mock_response(MOCK_GET_IMAGE_RESPONSE),
self._get_mock_response(),
self._get_mock_response(MOCK_GET_AZ_RESPONSE),
]
})
- response = self.client.post((
- "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/"
- "registry"), TEST_REGISTER_ENDPOINT_REQUEST,
+ response = self.client.post(
+ "/api/multicloud-pike/v0/windriver-hudson-dc_RegionOne/registry",
+ TEST_REGISTER_ENDPOINT_REQUEST,
HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
- self.assertEquals(status.HTTP_202_ACCEPTED, response.status_code)
+ self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code)
+'''
+registration
+'''
# Copyright (c) 2018 Intel Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
from newton_base.registration import registration as newton_registration
from common.msapi import extsys
-logger = logging.getLogger(__name__)
+LOGGER = logging.getLogger(__name__)
# DEBUG=True
def __init__(self):
self.proxy_prefix = settings.MULTICLOUD_PREFIX
self.aai_base_url = settings.AAI_BASE_URL
- self._logger = logger
+ self._logger = LOGGER
super(Registry, self).__init__()
def __init__(self):
self.proxy_prefix = settings.MULTICLOUD_API_V1_PREFIX
self.aai_base_url = settings.AAI_BASE_URL
- self._logger = logger
+ self._logger = LOGGER
super(RegistryV1, self).__init__()
def post(self, request, cloud_owner="", cloud_region_id=""):
+'''
+Request url
+'''
# Copyright (c) 2018 Intel Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
from newton_base.openoapi import hosts
from newton_base.openoapi import flavor
-urlpatterns = [
+URLPATTERNS = [
url(r'^networks(/(?P<networkid>[0-9a-zA-Z_-]+))?',
network.Networks.as_view()),
url(r'^subnets(/(?P<subnetid>[0-9a-zA-Z_-]+))?',
url(r'^hosts(/(?P<hostname>[0-9a-zA-Z_-]+))?', hosts.Hosts.as_view()),
]
-urlpatterns = format_suffix_patterns(urlpatterns)
+urlpatterns = format_suffix_patterns(URLPATTERNS)
+'''
+Request url V1
+'''
# Copyright (c) 2018 Intel Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
from newton_base.openoapi import hosts
from newton_base.openoapi import flavor
-urlpatterns = [
+URLPATTERNS = [
url(r'^networks(/(?P<networkid>[0-9a-zA-Z_-]+))?',
network.APIv1Networks.as_view()),
url(r'^subnets(/(?P<subnetid>[0-9a-zA-Z_-]+))?',
url(r'^hosts(/(?P<hostname>[0-9a-zA-Z_-]+))?', hosts.APIv1Hosts.as_view()),
]
-urlpatterns = format_suffix_patterns(urlpatterns)
+urlpatterns = format_suffix_patterns(URLPATTERNS)
+++ /dev/null
-# Copyright (c) 2018 Intel Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
+'''
+test capability
+'''
# Copyright (c) 2018 Intel Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# See the License for the specific language governing permissions and
# limitations under the License.
-import mock
import json
+import mock
from rest_framework import status
class TestCapacity(test_base.TestRequest):
- def setUp(self):
- super(TestCapacity, self).setUp()
-
+ '''
+ TestCapacity
+ '''
def _get_mock_response(self, return_value=None):
mock_response = mock.Mock(spec=test_base.MockResponse)
mock_response.status_code = status.HTTP_200_OK
@mock.patch.object(VimDriverUtils, 'get_session')
@mock.patch.object(VimDriverUtils, 'get_vim_info')
def test_capacity_check_success(self, mock_get_vim_info, mock_get_session):
+ '''
+ test_capacity_check_success
+ '''
mock_get_vim_info.return_value = mock_info.MOCK_VIM_INFO
mock_get_session.return_value = test_base.get_mock_session(
["get"], {
TEST_REQ_SUCCESS_SOURCE,
HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
- self.assertEquals(status.HTTP_200_OK, response.status_code)
+ self.assertEqual(status.HTTP_200_OK, response.status_code)
self.assertEqual({"result": True}, response.data)
@mock.patch.object(VimDriverUtils, 'get_session')
@mock.patch.object(VimDriverUtils, 'get_vim_info')
def test_capacity_check_nova_limits_failed(self, mock_get_vim_info, mock_get_session):
+ '''
+ test_capacity_check_nova_limits_failed
+ '''
mock_get_vim_info.return_value = mock_info.MOCK_VIM_INFO
mock_get_session.return_value = test_base.get_mock_session(
["get"], {
TEST_REQ_FAILED_SOURCE,
HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
- self.assertEquals(status.HTTP_200_OK, response.status_code)
+ self.assertEqual(status.HTTP_200_OK, response.status_code)
self.assertEqual({"result": False}, response.data)
@mock.patch.object(VimDriverUtils, 'get_session')
@mock.patch.object(VimDriverUtils, 'get_vim_info')
def test_capacity_check_nova_hypervisor_outofram(self, mock_get_vim_info, mock_get_session):
+ '''
+ test_capacity_check_nova_hypervisor_outofram
+ '''
mock_get_vim_info.return_value = mock_info.MOCK_VIM_INFO
mock_get_session.return_value = test_base.get_mock_session(
["get"], {
content_type='application/json',
HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
- self.assertEquals(status.HTTP_200_OK, response.status_code)
+ self.assertEqual(status.HTTP_200_OK, response.status_code)
self.assertEqual({"result": False}, response.data)
@mock.patch.object(VimDriverUtils, 'get_session')
@mock.patch.object(VimDriverUtils, 'get_vim_info')
def test_capacity_check_nova_hypervisor_outofstorage(self, mock_get_vim_info, mock_get_session):
+ '''
+ test_capacity_check_nova_hypervisor_outofstorage
+ '''
mock_get_vim_info.return_value = mock_info.MOCK_VIM_INFO
mock_get_session.return_value = test_base.get_mock_session(
["get"], {
content_type='application/json',
HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
- self.assertEquals(status.HTTP_200_OK, response.status_code)
+ self.assertEqual(status.HTTP_200_OK, response.status_code)
self.assertEqual({"result": False}, response.data)
@mock.patch.object(VimDriverUtils, 'get_session')
@mock.patch.object(VimDriverUtils, 'get_vim_info')
def test_capacity_check_nova_hypervisor_outofvcpu(self, mock_get_vim_info, mock_get_session):
+ '''
+ test_capacity_check_nova_hypervisor_outofvcpu
+ '''
mock_get_vim_info.return_value = mock_info.MOCK_VIM_INFO
mock_get_session.return_value = test_base.get_mock_session(
["get"], {
content_type='application/json',
HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
- self.assertEquals(status.HTTP_200_OK, response.status_code)
+ self.assertEqual(status.HTTP_200_OK, response.status_code)
self.assertEqual({"result": False}, response.data)
@mock.patch.object(VimDriverUtils, 'get_session')
@mock.patch.object(VimDriverUtils, 'get_vim_info')
def test_capacity_check_nova_limits_outofram(self, mock_get_vim_info, mock_get_session):
+ '''
+ test_capacity_check_nova_limits_outofram
+ '''
mock_get_vim_info.return_value = mock_info.MOCK_VIM_INFO
mock_get_session.return_value = test_base.get_mock_session(
["get"], {
content_type='application/json',
HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
- self.assertEquals(status.HTTP_200_OK, response.status_code)
+ self.assertEqual(status.HTTP_200_OK, response.status_code)
self.assertEqual({"result": True}, response.data)
@mock.patch.object(VimDriverUtils, 'get_session')
@mock.patch.object(VimDriverUtils, 'get_vim_info')
def test_capacity_check_volume_limits_outofstorage(self, mock_get_vim_info, mock_get_session):
+ '''
+ test_capacity_check_volume_limits_outofstorage
+ '''
mock_get_vim_info.return_value = mock_info.MOCK_VIM_INFO
mock_get_session.return_value = test_base.get_mock_session(
["get"], {
content_type='application/json',
HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
- self.assertEquals(status.HTTP_200_OK, response.status_code)
+ self.assertEqual(status.HTTP_200_OK, response.status_code)
self.assertEqual({"result": False}, response.data)
+'''
+test infra workload
+'''
# Copyright (c) 2018 Intel Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
"get_param": "flavor"
},
"image": "40be8d1a-3eb9-40de-8abd-43237517384f",
- "user_data": "#!/bin/bash -xv\necho \"hello world\" > /root/hello-world.txt\n"
+ "user_data":
+ "#!/bin/bash -xv\necho \"hello world\" > /root/hello-world.txt\n"
}
}
}
"get_param": "flavor"
},
"image": "40be8d1a-3eb9-40de-8abd-43237517384f",
- "user_data": "#!/bin/bash -xv\necho \"hello world\" > /root/hello-world.txt\n"
+ "user_data":
+ "#!/bin/bash -xv\necho \"hello world\" > /root/hello-world.txt\n"
}
}
}
class InfraWorkloadTest(unittest.TestCase):
def setUp(self):
- self._InfraWorkload = InfraWorkload()
+ self._infra_workload = InfraWorkload()
pass
def tearDown(self):
vimid = "CloudOwner_Region1"
- response = self._InfraWorkload.post(mock_request, vimid)
+ response = self._infra_workload.post(mock_request, vimid)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
pass
@mock.patch.object(helper, 'MultiCloudServiceHelper')
@mock.patch.object(helper, 'MultiCloudIdentityHelper')
- def test_post_wo_oof_directive(self, mock_MultiCloudIdentityHelper, mock_MultiCloudServiceHelper):
+ def test_post_wo_oof_directive(self, mock_MultiCloudIdentityHelper,
+ mock_MultiCloudServiceHelper):
mock_request = mock.Mock()
mock_request.META = {"testkey": "testvalue"}
mock_request.data = MOCK_HEAT_CREATE_BODY2
vimid = "CloudOwner_Region1"
- response = self._InfraWorkload.post(mock_request, vimid)
+ response = self._infra_workload.post(mock_request, vimid)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
pass
vimid = "CloudOwner_Region1"
mock_stack_id = "MOCKED_HEAT_STACK_ID1"
- response = self._InfraWorkload.get(mock_request, vimid, mock_stack_id)
+ response = self._infra_workload.get(mock_request, vimid, mock_stack_id)
self.assertEqual(response.status_code, status.HTTP_200_OK)
pass
vimid = "CloudOwner_Region1"
mock_stack_id = "MOCKED_HEAT_STACK_ID1"
- response = self._InfraWorkload.delete(mock_request, vimid, mock_stack_id)
+ response = self._infra_workload.delete(mock_request, vimid, mock_stack_id)
self.assertEqual(response.status_code, status.HTTP_200_OK)
pass
cloud_region_id = "Region1"
mock_stack_id = "MOCKED_HEAT_STACK_ID1"
- response = self._APIv1InfraWorkload.get(mock_request, cloud_owner, cloud_region_id, mock_stack_id)
+ response = self._APIv1InfraWorkload.get(mock_request, cloud_owner,
+ cloud_region_id, mock_stack_id)
self.assertEqual(response.status_code, status.HTTP_200_OK)
pass
cloud_region_id = "Region1"
mock_stack_id = "MOCKED_HEAT_STACK_ID1"
- response = self._APIv1InfraWorkload.delete(mock_request, cloud_owner, cloud_region_id, mock_stack_id)
+ response = self._APIv1InfraWorkload.delete(mock_request, cloud_owner,
+ cloud_region_id, mock_stack_id)
self.assertEqual(response.status_code, status.HTTP_200_OK)
pass
+'''
+pike sample test
+'''
# Copyright (c) 2017-2018 Wind River Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
class SampleViewTest(unittest.TestCase):
+ '''
+ Sample view test
+ '''
def setUp(self):
+
self.client = Client()
def tearDown(self):
+'''
+Samples url
+'''
# Copyright (c) 2017-2018 Wind River Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# limitations under the License.
from django.conf.urls import url
+from rest_framework.urlpatterns import format_suffix_patterns
from pike.samples import views
-urlpatterns = [
+URLPATTERNS = [
url(r'^samples/$', views.SampleList.as_view()), ]
+
+urlpatterns = format_suffix_patterns(URLPATTERNS)
+'''
+samples view
+'''
# Copyright (c) 2017-2018 Wind River Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
from rest_framework.views import APIView
from rest_framework.response import Response
-logger = logging.getLogger(__name__)
+LOGGER = logging.getLogger(__name__)
class SampleList(APIView):
"""
List all samples.
"""
- def get(self, request, format=None):
- logger.debug("get")
+ def get(self, request):
+ LOGGER.debug("get %s", request)
return Response({"status": "active"})
+'''
+test swagger
+'''
# Copyright (c) 2017-2018 Wind River Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
+'''
+swagger url
+'''
# Copyright (c) 2017-2018 Wind River Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
from pike.swagger.views import SwaggerJsonView
from pike.swagger.views import APIv1SwaggerJsonView
-urlpatterns = [
+URLPATTERNS = [
url(r'^api/multicloud-pike/v0/swagger.json$', SwaggerJsonView.as_view()),
url(r'^api/multicloud-pike/v1/swagger.json$', APIv1SwaggerJsonView.as_view()),
]
-urlpatterns = format_suffix_patterns(urlpatterns)
+urlpatterns = format_suffix_patterns(URLPATTERNS)
+'''
+swagger view
+'''
# Copyright (c) 2017-2018 Wind River Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# See the License for the specific language governing permissions and
# limitations under the License.
-import logging
-
from rest_framework.response import Response
from newton_base.swagger import views as newton_json_view
-logger = logging.getLogger(__name__)
-
class SwaggerJsonView(newton_json_view.SwaggerJsonView):
+ '''
+ Swagger Json View
+ '''
def get(self, request):
'''
json_data["basePath"] = "/api/multicloud-pike/v0/"
json_data["info"]["title"] = "Service NBI of MultiCloud plugin for OpenStack Pike"
return Response(data=json_data, status=200)
- else:
- return Response(data={'error': 'internal error'}, status=500)
+
+ return Response(data={'error': 'internal error'}, status=500)
class APIv1SwaggerJsonView(newton_json_view.SwaggerJsonView):
+ '''
+ V1 Swagger Json View
+ '''
def get(self, request):
'''
json_data["basePath"] = "/api/multicloud-pike/v1/"
json_data["info"]["title"] = "Service NBI v1 of MultiCloud plugin for Pike"
return Response(data=json_data, status=200)
- else:
- return Response(data={'error': 'internal error'}, status=500)
+
+ return Response(data={'error': 'internal error'}, status=500)
+'''
+The entry of urls
+'''
# Copyright (c) 2017-2018 Wind River Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
include('pike.extensions.urls')),
url(r'^api/multicloud-pike/v0/(?P<vimid>[0-9a-zA-Z_-]+)/infra_workload/?$',
infra_workload.InfraWorkload.as_view()),
- url(r'^api/multicloud-pike/v0/(?P<vimid>[0-9a-zA-Z_-]+)/infra_workload/(?P<requri>[0-9a-zA-Z_-]*)/?$',
+ url(r'^api/multicloud-pike/v0/(?P<vimid>[0-9a-zA-Z_-]+)/infra_workload/'
+ '(?P<requri>[0-9a-zA-Z_-]*)/?$',
infra_workload.InfraWorkload.as_view()),
url(r'^api/multicloud-pike/v0/(?P<vimid>[0-9a-zA-Z_-]+)/',
include('pike.proxy.urls')),
capacity.CapacityCheck.as_view()),
url(r'^api/multicloud-pike/v0/(?P<vimid>[0-9a-zA-Z_-]+)/infra_workload/?$',
infra_workload.InfraWorkload.as_view()),
- url(r'^api/multicloud-pike/v0/(?P<vimid>[0-9a-zA-Z_-]+)/infra_workload/(?P<requri>[0-9a-zA-Z_-]*)/?$',
+ url(r'^api/multicloud-pike/v0/(?P<vimid>[0-9a-zA-Z_-]+)/infra_workload/'
+ '(?P<requri>[0-9a-zA-Z_-]*)/?$',
infra_workload.InfraWorkload.as_view()),
# API upgrading
- url(r'^api/multicloud-pike/v1/(?P<cloud_owner>[0-9a-zA-Z_-]+)/(?P<cloud_region_id>[0-9a-zA-Z_-]+)/registry$',
+ url(r'^api/multicloud-pike/v1/(?P<cloud_owner>[0-9a-zA-Z_-]+)/'
+ '(?P<cloud_region_id>[0-9a-zA-Z_-]+)/registry$',
registration.RegistryV1.as_view()),
- url(r'^api/multicloud-pike/v1/(?P<cloud_owner>[0-9a-zA-Z_-]+)/(?P<cloud_region_id>[0-9a-zA-Z_-]+)$',
+ url(r'^api/multicloud-pike/v1/(?P<cloud_owner>[0-9a-zA-Z_-]+)/'
+ '(?P<cloud_region_id>[0-9a-zA-Z_-]+)$',
registration.RegistryV1.as_view()),
- url(r'^api/multicloud-pike/v1/(?P<cloud_owner>[0-9a-zA-Z_-]+)/(?P<cloud_region_id>[0-9a-zA-Z_-]+)/exten',
- include('pike.extensions.urlsV1')),
- url(r'^api/multicloud-pike/v1/(?P<cloud_owner>[0-9a-zA-Z_-]+)/(?P<cloud_region_id>[0-9a-zA-Z_-]+)/tenants/?$',
+ url(r'^api/multicloud-pike/v1/(?P<cloud_owner>[0-9a-zA-Z_-]+)/'
+ '(?P<cloud_region_id>[0-9a-zA-Z_-]+)/exten',
+ include('pike.extensions.urls_v1')),
+ url(r'^api/multicloud-pike/v1/(?P<cloud_owner>[0-9a-zA-Z_-]+)/'
+ '(?P<cloud_region_id>[0-9a-zA-Z_-]+)/tenants/?$',
tenants.APIv1Tenants.as_view()),
- url(r'^api/multicloud-pike/v1/(?P<cloud_owner>[0-9a-zA-Z_-]+)/(?P<cloud_region_id>[0-9a-zA-Z_-]+)/'
- '(?P<tenantid>[0-9a-zA-Z_-]{20,})/', include('pike.requests.urlsV1')),
- url(r'^api/multicloud-pike/v1/(?P<cloud_owner>[0-9a-zA-Z_-]+)/(?P<cloud_region_id>[0-9a-zA-Z_-]+)/capacity_check/?$',
+ url(r'^api/multicloud-pike/v1/(?P<cloud_owner>[0-9a-zA-Z_-]+)/'
+ '(?P<cloud_region_id>[0-9a-zA-Z_-]+)/'
+ '(?P<tenantid>[0-9a-zA-Z_-]{20,})/', include('pike.requests.urls_v1')),
+ url(r'^api/multicloud-pike/v1/(?P<cloud_owner>[0-9a-zA-Z_-]+)/'
+ '(?P<cloud_region_id>[0-9a-zA-Z_-]+)/capacity_check/?$',
capacity.APIv1CapacityCheck.as_view()),
- url(r'^api/multicloud-pike/v1/(?P<cloud_owner>[0-9a-zA-Z_-]+)/(?P<cloud_region_id>[0-9a-zA-Z_-]+)/infra_workload/?$',
+ url(r'^api/multicloud-pike/v1/(?P<cloud_owner>[0-9a-zA-Z_-]+)/'
+ '(?P<cloud_region_id>[0-9a-zA-Z_-]+)/infra_workload/?$',
infra_workload.APIv1InfraWorkload.as_view()),
- url(r'^api/multicloud-pike/v1/(?P<cloud_owner>[0-9a-zA-Z_-]+)/(?P<cloud_region_id>[0-9a-zA-Z_-]+)/infra_workload/(?P<requri>[0-9a-zA-Z_-]*)/?$',
+ url(r'^api/multicloud-pike/v1/(?P<cloud_owner>[0-9a-zA-Z_-]+)/'
+ '(?P<cloud_region_id>[0-9a-zA-Z_-]+)/infra_workload/(?P<requri>[0-9a-zA-Z_-]*)/?$',
infra_workload.APIv1InfraWorkload.as_view()),
- url(r'^api/multicloud-pike/v1/(?P<cloud_owner>[0-9a-zA-Z_-]+)/(?P<cloud_region_id>[0-9a-zA-Z_-]+)/',
- include('pike.proxy.urlsV1')),
+ url(r'^api/multicloud-pike/v1/(?P<cloud_owner>[0-9a-zA-Z_-]+)/'
+ '(?P<cloud_region_id>[0-9a-zA-Z_-]+)/',
+ include('pike.proxy.urls_v1')),
]
+"""
+start django web server.
+"""
# Copyright (c) 2017-2018 Wind River Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "pike.settings")
-application = get_wsgi_application()
+APPLICATION = get_wsgi_application()
# limitations under the License.
# rest framework
-Django==1.9.6
-djangorestframework==3.3.3
+Django==2.2.3
+djangorestframework==3.9.4
# for call rest api
-httplib2==0.9.2
+httplib2==0.13.0
# for call openstack auth and transport api
keystoneauth1==2.18.0
# unittest_xml_reporting==1.12.0
# for onap logging
-onappylog>=1.0.8
+onappylog>=1.0.9
# limitations under the License.
[tox]
-envlist = py27,pep8,cov,pylint
+envlist = py35,pep8,cov,pylint
skipsdist = true
[tox:jenkins]
max-complexity = 27
[testenv]
+basepython =
+ py35: python3.5
+ pep8: python3.5
+ cov: python3.5
+ pylint: python3.5
setenv =
PYTHONPATH = {toxinidir}/../share
deps =
[testenv:pep8]
deps=flake8
-commands=flake8
+commands=python3.5 -m flake8
[testenv:cov]
commands = coverage xml --omit="./venv-tox/*,./.tox/*,*tests*,*__init__.py,*newton_base*,*common*, *site-packages*"