update starlingx plugin to python3 28/94428/5
authorHaibin Huang <haibin.huang@intel.com>
Wed, 28 Aug 2019 11:51:31 +0000 (19:51 +0800)
committerHaibin Huang <haibin.huang@intel.com>
Thu, 29 Aug 2019 02:22:48 +0000 (10:22 +0800)
Issue-ID: MULTICLOUD-794
Signed-off-by: Haibin Huang <haibin.huang@intel.com>
Change-Id: I41d11465d24ea4d15f37db2146d7a77998f535f0

18 files changed:
starlingx/docker/Dockerfile
starlingx/initialize.sh
starlingx/mvn-phase-script.sh
starlingx/pom.xml
starlingx/requirements.txt
starlingx/starlingx/proxy/tests/test_service_proxy.py
starlingx/starlingx/proxy/urls.py
starlingx/starlingx/proxy/urlsV1.py
starlingx/starlingx/registration/tests/test_registration.py
starlingx/starlingx/registration/tests/test_registration2.py
starlingx/starlingx/requests/urls.py
starlingx/starlingx/requests/urlsV1.py
starlingx/starlingx/resource/tests/test_capacity.py
starlingx/starlingx/samples/urls.py
starlingx/starlingx/swagger/urls.py
starlingx/test-requirements.txt
starlingx/tox.ini
starlingx/uwsgi-requirements.txt [new file with mode: 0644]

index 8d6e6bc..bc169f9 100644 (file)
@@ -12,7 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-FROM python:2-alpine
+FROM python:3-alpine
 
 ARG HTTP_PROXY=${HTTP_PROXY}
 ARG HTTPS_PROXY=${HTTPS_PROXY}
@@ -32,15 +32,16 @@ ENV AAI_PASSWORD "AAI"
 EXPOSE 9009
 
 RUN addgroup -S onap && adduser -S -G onap onap
-
+# COPY ./ /opt/
+COPY ./multicloud-openstack-starlingx-*.zip /opt/multicloud-openstack-starlingx.zip
 RUN apk update && \
-    apk add bash uwsgi curl memcached wget unzip gcc make libc-dev libffi-dev openssl-dev && \
+    apk add pcre pcre-dev uwsgi memcached wget unzip gcc make libc-dev libffi-dev openssl-dev && \
     cd /opt/ && \
-    wget -O /opt/multicloud-openstack-starlingx.zip "https://nexus.onap.org/service/local/artifact/maven/redirect?r=staging&g=org.onap.multicloud.openstack&a=multicloud-openstack-starlingx&e=zip&v=1.4.0" && \
     unzip -q -o -B /opt/multicloud-openstack-starlingx.zip -d /opt/ && \
     rm -f /opt/multicloud-openstack-starlingx.zip && \
-    pip install -r /opt/starlingx/requirements.txt && \
-    apk del wget unzip gcc make libc-dev libffi-dev openssl-dev && \
+    pip3 install -r /opt/starlingx/requirements.txt && \
+    pip3 install -r /opt/starlingx/uwsgi-requirements.txt && \
+    apk del wget unzip gcc make libc-dev libffi-dev openssl-dev pcre-dev && \
     mkdir -p /var/log/onap/multicloud/openstack/starlingx && \
     chown onap:onap /var/log/onap -R && \
     chown onap:onap /opt/starlingx -R
index 758d032..fca5529 100755 (executable)
@@ -13,4 +13,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-pip install -r requirements.txt
+pip3 install -r requirements.txt
index c8d09ce..43a4ef1 100755 (executable)
@@ -53,7 +53,7 @@ run_tox_test()
     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
index db0cbdd..b11267a 100644 (file)
                         <executions>
                             <execution>
                                 <id>copy-resources</id>
-                                <phase>validate</phase>
+                                <phase>install</phase>
                                 <goals>
                                     <goal>copy-resources</goal>
                                 </goals>
                                 <configuration>
+                                    <overwrite>true</overwrite>
+                                    <nonFilteredFileExtensions>
+                                        <nonFilteredFileExtension>zip</nonFilteredFileExtension>
+                                    </nonFilteredFileExtensions>
                                     <outputDirectory>${project.basedir}/docker_target</outputDirectory>
                                     <resources>
                                         <resource>
                                             <directory>${project.basedir}/docker</directory>
                                             <filtering>true</filtering>
                                         </resource>
+                                        <resource>
+                                            <directory>${project.basedir}/target</directory>
+                                            <filtering>true</filtering>
+                                            <includes>
+                                                <include>*.zip</include>
+                                            </includes>
+                                        </resource>
                                     </resources>
                                 </configuration>
                             </execution>
index c016f77..854d64b 100644 (file)
 # 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
 
-#python-memcached
+# python-memcached
 python-memcached
 
-#uwsgi for parallel processing
-uwsgi
+# uwsgi for parallel processing
+uwsgi
 
 # for unit test
 # coverage==4.2
@@ -34,4 +34,4 @@ uwsgi
 # unittest_xml_reporting==1.12.0
 
 # for onap logging
-onappylog>=1.0.8
+onappylog>=1.0.9
index 858fbee..5d38f44 100644 (file)
@@ -718,12 +718,12 @@ class TestServiceProxy(unittest.TestCase):
         response = self.client.head(
             "/api/multicloud-starlingx/v0/starlingx_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-starlingx/v0/starlingx_RegionOne/compute/v2.1/fcca3cc49d5e42caae15459e27103efc/servers")
-        self.assertEquals(status.HTTP_403_FORBIDDEN, response.status_code)
+        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):
@@ -732,7 +732,7 @@ class TestServiceProxy(unittest.TestCase):
         response = self.client.get(
             "/api/multicloud-starlingx/v0/starlingx_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')
@@ -744,14 +744,14 @@ class TestServiceProxy(unittest.TestCase):
         url_part3 = "/v2.1/fcca3cc49d5e42caae15459e27103efc/servers"
         url = (url_part1 + servicetype + url_part3)
         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))
 
         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
@@ -759,7 +759,7 @@ class TestServiceProxy(unittest.TestCase):
         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')
@@ -818,29 +818,29 @@ class TestServiceProxy(unittest.TestCase):
             "/api/multicloud-starlingx/v0/starlingx_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-starlingx/v0/starlingx_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-starlingx/v0/starlingx_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
@@ -848,5 +848,5 @@ class TestServiceProxy(unittest.TestCase):
             "/api/multicloud-starlingx/v0/starlingx_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'])
index 7fee092..cde9e2b 100644 (file)
@@ -19,7 +19,7 @@ from starlingx.proxy.views import identityV3
 from starlingx.proxy.views import services
 from newton_base.proxy import dnsaasdelegate
 
-urlpatterns = [
+URLPATTERNS = [
     #    url(r'^identity/v2)$',
     #        identityV2.Tokens.as_view()),
     url(r'^identity/v3/auth/tokens/?$',
@@ -38,4 +38,4 @@ urlpatterns = [
         services.Services.as_view()),
 ]
 
-urlpatterns = format_suffix_patterns(urlpatterns)
+urlpatterns = format_suffix_patterns(URLPATTERNS)
index 0009b7f..7fca18e 100644 (file)
@@ -19,7 +19,7 @@ from starlingx.proxy.views import identityV3
 from starlingx.proxy.views import services
 from newton_base.proxy import dnsaasdelegate
 
-urlpatterns = [
+URLPATTERNS = [
     url(r'^identity/v3/auth/tokens/?$',
         identityV3.APIv1Tokens.as_view()),
     url(r'^identity/v3/?$',
@@ -36,4 +36,4 @@ urlpatterns = [
         services.APIv1Services.as_view()),
 ]
 
-urlpatterns = format_suffix_patterns(urlpatterns)
+urlpatterns = format_suffix_patterns(URLPATTERNS)
index d4af22b..4f76880 100644 (file)
@@ -245,7 +245,7 @@ class TestRegistration(test_base.TestRequest):
             "registry"), TEST_REGISTER_ENDPOINT_REQUEST,
             HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
 
-        self.assertEquals(status.HTTP_202_ACCEPTED,
+        self.assertEqual(status.HTTP_202_ACCEPTED,
                           response.status_code)
 
     #    @mock.patch.object(VimDriverUtils, 'delete_vim_info')
@@ -258,7 +258,7 @@ class TestRegistration(test_base.TestRequest):
     #            "registry"), "{}", content_type="application/json",
     #            HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
 
-    #        self.assertEquals(status.HTTP_202_ACCEPTED,
+    #        self.assertEqual(status.HTTP_202_ACCEPTED,
     #                          response.status_code)
 
     @mock.patch.object(VimDriverUtils, 'delete_vim_info')
@@ -271,7 +271,7 @@ class TestRegistration(test_base.TestRequest):
             "registry"), "{}", content_type="application/json",
             HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
 
-        self.assertEquals(status.HTTP_204_NO_CONTENT,
+        self.assertEqual(status.HTTP_204_NO_CONTENT,
                           response.status_code)
 
     @mock.patch.object(VimDriverUtils, 'get_session')
@@ -301,7 +301,7 @@ class TestRegistration(test_base.TestRequest):
             "registry"), TEST_REGISTER_ENDPOINT_REQUEST,
             HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
 
-        self.assertEquals(status.HTTP_202_ACCEPTED,
+        self.assertEqual(status.HTTP_202_ACCEPTED,
                           response.status_code)
 
     @mock.patch.object(VimDriverUtils, 'get_session')
@@ -331,7 +331,7 @@ class TestRegistration(test_base.TestRequest):
             "registry"), TEST_REGISTER_ENDPOINT_REQUEST,
             HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
 
-        self.assertEquals(status.HTTP_202_ACCEPTED,
+        self.assertEqual(status.HTTP_202_ACCEPTED,
                           response.status_code)
 
     @mock.patch.object(VimDriverUtils, 'get_session')
@@ -361,7 +361,7 @@ class TestRegistration(test_base.TestRequest):
             "registry"), TEST_REGISTER_ENDPOINT_REQUEST,
             HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
 
-        self.assertEquals(status.HTTP_202_ACCEPTED,
+        self.assertEqual(status.HTTP_202_ACCEPTED,
                           response.status_code)
 
     @mock.patch.object(VimDriverUtils, 'get_session')
@@ -391,7 +391,7 @@ class TestRegistration(test_base.TestRequest):
             "registry"), TEST_REGISTER_ENDPOINT_REQUEST,
             HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
 
-        self.assertEquals(status.HTTP_202_ACCEPTED,
+        self.assertEqual(status.HTTP_202_ACCEPTED,
                           response.status_code)
 
     @mock.patch.object(VimDriverUtils, 'get_session')
@@ -421,7 +421,7 @@ class TestRegistration(test_base.TestRequest):
             "registry"), TEST_REGISTER_ENDPOINT_REQUEST,
             HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
 
-        self.assertEquals(status.HTTP_202_ACCEPTED,
+        self.assertEqual(status.HTTP_202_ACCEPTED,
                           response.status_code)
 
     @mock.patch.object(VimDriverUtils, 'get_session')
@@ -451,7 +451,7 @@ class TestRegistration(test_base.TestRequest):
             "registry"), TEST_REGISTER_ENDPOINT_REQUEST,
             HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
 
-        self.assertEquals(status.HTTP_202_ACCEPTED,
+        self.assertEqual(status.HTTP_202_ACCEPTED,
                           response.status_code)
 
     @mock.patch.object(VimDriverUtils, 'get_session')
@@ -481,5 +481,5 @@ class TestRegistration(test_base.TestRequest):
             "registry"), TEST_REGISTER_ENDPOINT_REQUEST,
             HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
 
-        self.assertEquals(status.HTTP_202_ACCEPTED,
+        self.assertEqual(status.HTTP_202_ACCEPTED,
                           response.status_code)
index d2084ec..f2ba80c 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import mock
+import mock
 
 import unittest
+from unittest import mock
 from django.test import Client
 from rest_framework import status
 from common.utils import restcall
@@ -83,29 +84,33 @@ class TestRegistration2(unittest.TestCase):
         restcall.req_to_aai = mock.Mock()
         restcall.req_to_aai.return_value = (0, {}, status.HTTP_200_OK)
         mock_session = test_base.get_mock_session(
-            ["get"], {"get": {
-                "content": MOCK_GET_FLAVOR_RESPONSE}}),
+            ["get"], {
+                "side_effect": [
+                    test_base.get_mock_response(MOCK_GET_FLAVOR_RESPONSE)
+                ]
+            })
 
         retcode, content = self.view.register_helper._discover_flavors(
             vimid="starlingx_RegionOne",
             session=mock_session, viminfo=MOCK_VIM_INFO
         )
 
-        self.assertEquals(retcode, 11)
+        self.assertEqual(retcode, 0)
 
     def test_discover_flavors_w_hpa_numa(self):
         restcall.req_to_aai = mock.Mock()
         restcall.req_to_aai.return_value = (0, {}, status.HTTP_200_OK)
         mock_session = test_base.get_mock_session(
-            ["get"], {"side_effect": [{
-                "content": MOCK_GET_FLAVOR_RESPONSE_w_hpa_numa},
-                {
-                    "content": MOCK_GET_FLAVOR_EXTRASPECS_RESPONSE_w_hpa_numa}
-            ]}),
+            ["get"], {
+                "side_effect": [
+                    test_base.get_mock_response(MOCK_GET_FLAVOR_RESPONSE_w_hpa_numa),
+                    test_base.get_mock_response(MOCK_GET_FLAVOR_EXTRASPECS_RESPONSE_w_hpa_numa),
+                ]
+            }),
 
         retcode, content = self.view.register_helper._discover_flavors(
             vimid="starlingx_RegionOne",
             session=mock_session, viminfo=MOCK_VIM_INFO
         )
 
-        self.assertEquals(retcode, 11)
+        self.assertEqual(retcode, 11)
index fbd088e..3068574 100644 (file)
@@ -25,7 +25,7 @@ from newton_base.openoapi import limits
 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_-]+))?',
@@ -46,4 +46,4 @@ urlpatterns = [
     url(r'^hosts(/(?P<hostname>[0-9a-zA-Z_-]+))?', hosts.Hosts.as_view()),
 ]
 
-urlpatterns = format_suffix_patterns(urlpatterns)
+urlpatterns = format_suffix_patterns(URLPATTERNS)
index 1318e82..d788517 100644 (file)
@@ -25,7 +25,7 @@ from newton_base.openoapi import limits
 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_-]+))?',
@@ -46,4 +46,4 @@ urlpatterns = [
     url(r'^hosts(/(?P<hostname>[0-9a-zA-Z_-]+))?', hosts.APIv1Hosts.as_view()),
 ]
 
-urlpatterns = format_suffix_patterns(urlpatterns)
+urlpatterns = format_suffix_patterns(URLPATTERNS)
index ee30985..22340aa 100644 (file)
@@ -142,7 +142,7 @@ class TestCapacity(test_base.TestRequest):
             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({'AZs': [], "result": True}, response.data)
 
     @mock.patch.object(VimDriverUtils, 'get_session')
@@ -163,7 +163,7 @@ class TestCapacity(test_base.TestRequest):
             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({'AZs': [], "result": False}, response.data)
 
     @mock.patch.object(VimDriverUtils, 'get_session')
@@ -185,7 +185,7 @@ class TestCapacity(test_base.TestRequest):
             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({'AZs': [], "result": False}, response.data)
 
     @mock.patch.object(VimDriverUtils, 'get_session')
@@ -207,7 +207,7 @@ class TestCapacity(test_base.TestRequest):
             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({'AZs': [], "result": False}, response.data)
 
     @mock.patch.object(VimDriverUtils, 'get_session')
@@ -229,7 +229,7 @@ class TestCapacity(test_base.TestRequest):
             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({'AZs': [], "result": False}, response.data)
 
     @mock.patch.object(VimDriverUtils, 'get_session')
@@ -251,7 +251,7 @@ class TestCapacity(test_base.TestRequest):
             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({'AZs': [], "result": False}, response.data)
 
     @mock.patch.object(VimDriverUtils, 'get_session')
@@ -273,5 +273,5 @@ class TestCapacity(test_base.TestRequest):
             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({'AZs': [], "result": False}, response.data)
index 5df38ed..4eafa01 100644 (file)
 # limitations under the License.
 
 from django.conf.urls import url
+from rest_framework.urlpatterns import format_suffix_patterns
 from starlingx.samples import views
 
-urlpatterns = [
+URLPATTERNS = [
     url(r'^samples/$', views.SampleList.as_view()), ]
+
+urlpatterns = format_suffix_patterns(URLPATTERNS)
index da51886..3f1bc2e 100644 (file)
@@ -18,9 +18,9 @@ from rest_framework.urlpatterns import format_suffix_patterns
 from starlingx.swagger.views import SwaggerJsonView
 from starlingx.swagger.views import APIv1SwaggerJsonView
 
-urlpatterns = [
+URLPATTERNS = [
     url(r'^api/multicloud-starlingx/v0/swagger.json$', SwaggerJsonView.as_view()),
     url(r'^api/multicloud-starlingx/v1/swagger.json$', APIv1SwaggerJsonView.as_view()),
 ]
 
-urlpatterns = format_suffix_patterns(urlpatterns)
+urlpatterns = format_suffix_patterns(URLPATTERNS)
index cc3059e..d91d31d 100644 (file)
@@ -1,6 +1,6 @@
 # for unit test
 coverage==4.2
-mock==2.0.0
+mock==3.0.5
 unittest_xml_reporting==1.12.0
 
 pylint # GPLv2
index 78dc967..72c4b46 100644 (file)
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 [tox]
-envlist = py27,pep8,cov
+envlist = py36,cov,pylint
 skipsdist = true
 
 [tox:jenkins]
@@ -25,6 +25,10 @@ exclude = ./venv-tox,./.tox
 max-complexity = 27
 
 [testenv]
+basepython =
+    py36: python3
+    cov: python3
+    pylint: python3
 setenv =
     PYTHONPATH = {toxinidir}/../share
 deps = 
@@ -36,8 +40,14 @@ commands =
 
 [testenv:pep8]
 deps=flake8
-commands=flake8
+commands=python3 -m flake8
 
 [testenv:cov]
-commands = coverage xml --omit="./venv-tox/*,./.tox/*,*tests*,*__init__.py,*newton_base*,*starlingx_base*,*common*, *site-packages*"
+commands = coverage xml --omit="./venv-tox/*,./.tox/*,*tests*,*__init__.py,*newton_base*,*common*,*starlingx_base* *site-packages*"
+
+[testenv:pylint]
+whitelist_externals = bash
+commands =
+  bash -c "\
+    pylint -f parseable --reports=y starlingx | tee pylint.out"
 
diff --git a/starlingx/uwsgi-requirements.txt b/starlingx/uwsgi-requirements.txt
new file mode 100644 (file)
index 0000000..5b24077
--- /dev/null
@@ -0,0 +1,2 @@
+# uwsgi for parallel processing
+uwsgi
\ No newline at end of file