Best Python code snippet using tempest_python
test_project.py
Source:test_project.py  
1# Copyright 2015 Google LLC2#3# Licensed under the Apache License, Version 2.0 (the "License");4# you may not use this file except in compliance with the License.5# You may obtain a copy of the License at6#7#     http://www.apache.org/licenses/LICENSE-2.08#9# Unless required by applicable law or agreed to in writing, software10# distributed under the License is distributed on an "AS IS" BASIS,11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.12# See the License for the specific language governing permissions and13# limitations under the License.14import unittest15class TestProject(unittest.TestCase):16    @staticmethod17    def _get_target_class():18        from google.cloud.resource_manager.project import Project19        return Project20    def _make_one(self, *args, **kw):21        return self._get_target_class()(*args, **kw)22    def test_constructor_defaults(self):23        client = object()24        PROJECT_ID = 'project-id'25        project = self._make_one(PROJECT_ID, client)26        self.assertEqual(project.project_id, PROJECT_ID)27        self.assertEqual(project._client, client)28        self.assertIsNone(project.name)29        self.assertIsNone(project.number)30        self.assertEqual(project.labels, {})31        self.assertIsNone(project.status)32        self.assertIsNone(project.parent)33    def test_constructor_explicit(self):34        client = object()35        PROJECT_ID = 'project-id'36        DISPLAY_NAME = 'name'37        LABELS = {'foo': 'bar'}38        project = self._make_one(PROJECT_ID, client,39                                 name=DISPLAY_NAME, labels=LABELS)40        self.assertEqual(project.project_id, PROJECT_ID)41        self.assertEqual(project._client, client)42        self.assertEqual(project.name, DISPLAY_NAME)43        self.assertIsNone(project.number)44        self.assertEqual(project.labels, LABELS)45        self.assertIsNone(project.status)46        self.assertIsNone(project.parent)47    def test_from_api_repr(self):48        client = object()49        PROJECT_ID = 'project-id'50        PROJECT_NAME = 'My Project Name'51        PROJECT_NUMBER = 1234567852        PROJECT_LABELS = {'env': 'prod'}53        PROJECT_LIFECYCLE_STATE = 'ACTIVE'54        PARENT = {'type': 'organization', 'id': '433637338579'}55        resource = {'projectId': PROJECT_ID,56                    'name': PROJECT_NAME,57                    'projectNumber': PROJECT_NUMBER,58                    'labels': PROJECT_LABELS,59                    'lifecycleState': PROJECT_LIFECYCLE_STATE,60                    'parent': PARENT}61        project = self._get_target_class().from_api_repr(resource, client)62        self.assertEqual(project.project_id, PROJECT_ID)63        self.assertEqual(project._client, client)64        self.assertEqual(project.name, PROJECT_NAME)65        self.assertEqual(project.number, PROJECT_NUMBER)66        self.assertEqual(project.labels, PROJECT_LABELS)67        self.assertEqual(project.status, PROJECT_LIFECYCLE_STATE)68        self.assertEqual(project.parent, PARENT)69    def test_full_name(self):70        PROJECT_ID = 'project-id'71        project = self._make_one(PROJECT_ID, None)72        self.assertEqual('projects/%s' % PROJECT_ID, project.full_name)73    def test_full_name_missing_id(self):74        project = self._make_one(None, None)75        with self.assertRaises(ValueError):76            self.assertIsNone(project.full_name)77    def test_path(self):78        PROJECT_ID = 'project-id'79        project = self._make_one(PROJECT_ID, None)80        self.assertEqual('/projects/%s' % PROJECT_ID, project.path)81    def test_create(self):82        PROJECT_ID = 'project-id'83        PROJECT_NUMBER = 12384        PROJECT_RESOURCE = {85            'projectId': PROJECT_ID,86            'projectNumber': PROJECT_NUMBER,87            'name': 'Project Name',88            'labels': {},89            'lifecycleState': 'ACTIVE',90            'parent': {91                'type': 'organization',92                'id': '433637338589',93            },94        }95        connection = _Connection(PROJECT_RESOURCE)96        client = _Client(connection=connection)97        project = self._make_one(PROJECT_ID, client)98        self.assertIsNone(project.number)99        project.create()100        self.assertEqual(project.number, PROJECT_NUMBER)101        request, = connection._requested102        expected_request = {103            'method': 'POST',104            'data': {105                'projectId': PROJECT_ID,106                'labels': {},107                'name': None,108            },109            'path': '/projects',110        }111        self.assertEqual(request, expected_request)112    def test_reload(self):113        PROJECT_ID = 'project-id'114        PROJECT_NUMBER = 123115        PROJECT_RESOURCE = {116            'projectId': PROJECT_ID,117            'projectNumber': PROJECT_NUMBER,118            'name': 'Project Name',119            'labels': {'env': 'prod'},120            'lifecycleState': 'ACTIVE',121            'parent': {122                'type': 'organization',123                'id': '433637338579',124            },125        }126        connection = _Connection(PROJECT_RESOURCE)127        client = _Client(connection=connection)128        project = self._make_one(PROJECT_ID, client)129        self.assertIsNone(project.number)130        self.assertIsNone(project.name)131        self.assertEqual(project.labels, {})132        self.assertIsNone(project.status)133        project.reload()134        self.assertEqual(project.name, PROJECT_RESOURCE['name'])135        self.assertEqual(project.number, PROJECT_NUMBER)136        self.assertEqual(project.labels, PROJECT_RESOURCE['labels'])137        self.assertEqual(project.status, PROJECT_RESOURCE['lifecycleState'])138        request, = connection._requested139        # NOTE: data is not in the request since a GET request.140        expected_request = {141            'method': 'GET',142            'path': project.path,143        }144        self.assertEqual(request, expected_request)145    def test_exists(self):146        PROJECT_ID = 'project-id'147        connection = _Connection({'projectId': PROJECT_ID})148        client = _Client(connection=connection)149        project = self._make_one(PROJECT_ID, client)150        self.assertTrue(project.exists())151    def test_exists_with_explicitly_passed_client(self):152        PROJECT_ID = 'project-id'153        connection = _Connection({'projectId': PROJECT_ID})154        client = _Client(connection=connection)155        project = self._make_one(PROJECT_ID, None)156        self.assertTrue(project.exists(client=client))157    def test_exists_with_missing_client(self):158        PROJECT_ID = 'project-id'159        project = self._make_one(PROJECT_ID, None)160        with self.assertRaises(AttributeError):161            project.exists()162    def test_exists_not_found(self):163        PROJECT_ID = 'project-id'164        connection = _Connection()165        client = _Client(connection=connection)166        project = self._make_one(PROJECT_ID, client)167        self.assertFalse(project.exists())168    def test_update(self):169        PROJECT_ID = 'project-id'170        PROJECT_NUMBER = 123171        PROJECT_NAME = 'Project Name'172        LABELS = {'env': 'prod'}173        PROJECT_RESOURCE = {174            'projectId': PROJECT_ID,175            'projectNumber': PROJECT_NUMBER,176            'name': PROJECT_NAME,177            'labels': LABELS,178            'lifecycleState': 'ACTIVE',179        }180        connection = _Connection(PROJECT_RESOURCE)181        client = _Client(connection=connection)182        project = self._make_one(PROJECT_ID, client)183        project.name = PROJECT_NAME184        project.labels = LABELS185        project.update()186        request, = connection._requested187        expected_request = {188            'method': 'PUT',189            'data': {190                'name': PROJECT_NAME,191                'labels': LABELS,192                'parent': None,193            },194            'path': project.path,195        }196        self.assertEqual(request, expected_request)197    def test_delete_without_reload_data(self):198        PROJECT_ID = 'project-id'199        PROJECT_NUMBER = 123200        PROJECT_RESOURCE = {201            'projectId': PROJECT_ID,202            'projectNumber': PROJECT_NUMBER,203            'name': 'Project Name',204            'labels': {'env': 'prod'},205            'lifecycleState': 'ACTIVE',206            'parent': {207                'type': 'organization',208                'id': '433637338579',209            },210        }211        connection = _Connection(PROJECT_RESOURCE)212        client = _Client(connection=connection)213        project = self._make_one(PROJECT_ID, client)214        project.delete(reload_data=False)215        request, = connection._requested216        # NOTE: data is not in the request since a DELETE request.217        expected_request = {218            'method': 'DELETE',219            'path': project.path,220        }221        self.assertEqual(request, expected_request)222    def test_delete_with_reload_data(self):223        PROJECT_ID = 'project-id'224        PROJECT_NUMBER = 123225        PROJECT_RESOURCE = {226            'projectId': PROJECT_ID,227            'projectNumber': PROJECT_NUMBER,228            'name': 'Project Name',229            'labels': {'env': 'prod'},230            'lifecycleState': 'ACTIVE',231            'parent': {232                'type': 'organization',233                'id': '433637338579',234            },235        }236        DELETING_PROJECT = PROJECT_RESOURCE.copy()237        DELETING_PROJECT['lifecycleState'] = NEW_STATE = 'DELETE_REQUESTED'238        connection = _Connection(PROJECT_RESOURCE, DELETING_PROJECT)239        client = _Client(connection=connection)240        project = self._make_one(PROJECT_ID, client)241        project.delete(reload_data=True)242        self.assertEqual(project.status, NEW_STATE)243        delete_request, get_request = connection._requested244        # NOTE: data is not in the request since a DELETE request.245        expected_delete_request = {246            'method': 'DELETE',247            'path': project.path,248        }249        self.assertEqual(delete_request, expected_delete_request)250        # NOTE: data is not in the request since a GET request.251        expected_get_request = {252            'method': 'GET',253            'path': project.path,254        }255        self.assertEqual(get_request, expected_get_request)256    def test_undelete_without_reload_data(self):257        PROJECT_ID = 'project-id'258        PROJECT_NUMBER = 123259        PROJECT_RESOURCE = {260            'projectId': PROJECT_ID,261            'projectNumber': PROJECT_NUMBER,262            'name': 'Project Name',263            'labels': {'env': 'prod'},264            'lifecycleState': 'DELETE_REQUESTED',265            'parent': {266                'type': 'organization',267                'id': '433637338579',268            },269        }270        connection = _Connection(PROJECT_RESOURCE)271        client = _Client(connection=connection)272        project = self._make_one(PROJECT_ID, client)273        project.undelete(reload_data=False)274        request, = connection._requested275        # NOTE: data is not in the request, undelete doesn't need it.276        expected_request = {277            'method': 'POST',278            'path': project.path + ':undelete',279        }280        self.assertEqual(request, expected_request)281    def test_undelete_with_reload_data(self):282        PROJECT_ID = 'project-id'283        PROJECT_NUMBER = 123284        PROJECT_RESOURCE = {285            'projectId': PROJECT_ID,286            'projectNumber': PROJECT_NUMBER,287            'name': 'Project Name',288            'labels': {'env': 'prod'},289            'lifecycleState': 'DELETE_REQUESTED',290            'parent': {291                'type': 'organization',292                'id': '433637338579',293            },294        }295        UNDELETED_PROJECT = PROJECT_RESOURCE.copy()296        UNDELETED_PROJECT['lifecycleState'] = NEW_STATE = 'ACTIVE'297        connection = _Connection(PROJECT_RESOURCE, UNDELETED_PROJECT)298        client = _Client(connection=connection)299        project = self._make_one(PROJECT_ID, client)300        project.undelete(reload_data=True)301        self.assertEqual(project.status, NEW_STATE)302        undelete_request, get_request = connection._requested303        # NOTE: data is not in the request, undelete doesn't need it.304        expected_undelete_request = {305            'method': 'POST',306            'path': project.path + ':undelete',307        }308        self.assertEqual(undelete_request, expected_undelete_request)309        # NOTE: data is not in the request since a GET request.310        expected_get_request = {311            'method': 'GET',312            'path': project.path,313        }314        self.assertEqual(get_request, expected_get_request)315class _Connection(object):316    def __init__(self, *responses):317        self._responses = responses318        self._requested = []319    def api_request(self, **kw):320        from google.cloud.exceptions import NotFound321        self._requested.append(kw)322        try:323            response, self._responses = self._responses[0], self._responses[1:]324        except IndexError:325            raise NotFound('miss')326        else:327            return response328class _Client(object):329    def __init__(self, connection=None):...test_datastore_client_v1.py
Source:test_datastore_client_v1.py  
1# Copyright 2018 Google LLC2#3# Licensed under the Apache License, Version 2.0 (the "License");4# you may not use this file except in compliance with the License.5# You may obtain a copy of the License at6#7#     https://www.apache.org/licenses/LICENSE-2.08#9# Unless required by applicable law or agreed to in writing, software10# distributed under the License is distributed on an "AS IS" BASIS,11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.12# See the License for the specific language governing permissions and13# limitations under the License.14"""Unit tests."""15import pytest16from google.cloud import datastore_v117from google.cloud.datastore_v1 import enums18from google.cloud.datastore_v1.proto import datastore_pb219from google.cloud.datastore_v1.proto import entity_pb220class MultiCallableStub(object):21    """Stub for the grpc.UnaryUnaryMultiCallable interface."""22    def __init__(self, method, channel_stub):23        self.method = method24        self.channel_stub = channel_stub25    def __call__(self, request, timeout=None, metadata=None, credentials=None):26        self.channel_stub.requests.append((self.method, request))27        response = None28        if self.channel_stub.responses:29            response = self.channel_stub.responses.pop()30        if isinstance(response, Exception):31            raise response32        if response:33            return response34class ChannelStub(object):35    """Stub for the grpc.Channel interface."""36    def __init__(self, responses=[]):37        self.responses = responses38        self.requests = []39    def unary_unary(self,40                    method,41                    request_serializer=None,42                    response_deserializer=None):43        return MultiCallableStub(method, self)44class CustomException(Exception):45    pass46class TestDatastoreClient(object):47    def test_lookup(self):48        # Setup Expected Response49        expected_response = {}50        expected_response = datastore_pb2.LookupResponse(**expected_response)51        # Mock the API response52        channel = ChannelStub(responses=[expected_response])53        client = datastore_v1.DatastoreClient(channel=channel)54        # Setup Request55        project_id = 'projectId-1969970175'56        keys = []57        response = client.lookup(project_id, keys)58        assert expected_response == response59        assert len(channel.requests) == 160        expected_request = datastore_pb2.LookupRequest(61            project_id=project_id, keys=keys)62        actual_request = channel.requests[0][1]63        assert expected_request == actual_request64    def test_lookup_exception(self):65        # Mock the API response66        channel = ChannelStub(responses=[CustomException()])67        client = datastore_v1.DatastoreClient(channel=channel)68        # Setup request69        project_id = 'projectId-1969970175'70        keys = []71        with pytest.raises(CustomException):72            client.lookup(project_id, keys)73    def test_run_query(self):74        # Setup Expected Response75        expected_response = {}76        expected_response = datastore_pb2.RunQueryResponse(**expected_response)77        # Mock the API response78        channel = ChannelStub(responses=[expected_response])79        client = datastore_v1.DatastoreClient(channel=channel)80        # Setup Request81        project_id = 'projectId-1969970175'82        partition_id = {}83        response = client.run_query(project_id, partition_id)84        assert expected_response == response85        assert len(channel.requests) == 186        expected_request = datastore_pb2.RunQueryRequest(87            project_id=project_id, partition_id=partition_id)88        actual_request = channel.requests[0][1]89        assert expected_request == actual_request90    def test_run_query_exception(self):91        # Mock the API response92        channel = ChannelStub(responses=[CustomException()])93        client = datastore_v1.DatastoreClient(channel=channel)94        # Setup request95        project_id = 'projectId-1969970175'96        partition_id = {}97        with pytest.raises(CustomException):98            client.run_query(project_id, partition_id)99    def test_begin_transaction(self):100        # Setup Expected Response101        transaction = b'-34'102        expected_response = {'transaction': transaction}103        expected_response = datastore_pb2.BeginTransactionResponse(104            **expected_response)105        # Mock the API response106        channel = ChannelStub(responses=[expected_response])107        client = datastore_v1.DatastoreClient(channel=channel)108        # Setup Request109        project_id = 'projectId-1969970175'110        response = client.begin_transaction(project_id)111        assert expected_response == response112        assert len(channel.requests) == 1113        expected_request = datastore_pb2.BeginTransactionRequest(114            project_id=project_id)115        actual_request = channel.requests[0][1]116        assert expected_request == actual_request117    def test_begin_transaction_exception(self):118        # Mock the API response119        channel = ChannelStub(responses=[CustomException()])120        client = datastore_v1.DatastoreClient(channel=channel)121        # Setup request122        project_id = 'projectId-1969970175'123        with pytest.raises(CustomException):124            client.begin_transaction(project_id)125    def test_commit(self):126        # Setup Expected Response127        index_updates = 1425228195128        expected_response = {'index_updates': index_updates}129        expected_response = datastore_pb2.CommitResponse(**expected_response)130        # Mock the API response131        channel = ChannelStub(responses=[expected_response])132        client = datastore_v1.DatastoreClient(channel=channel)133        # Setup Request134        project_id = 'projectId-1969970175'135        mode = enums.CommitRequest.Mode.MODE_UNSPECIFIED136        mutations = []137        response = client.commit(project_id, mode, mutations)138        assert expected_response == response139        assert len(channel.requests) == 1140        expected_request = datastore_pb2.CommitRequest(141            project_id=project_id, mode=mode, mutations=mutations)142        actual_request = channel.requests[0][1]143        assert expected_request == actual_request144    def test_commit_exception(self):145        # Mock the API response146        channel = ChannelStub(responses=[CustomException()])147        client = datastore_v1.DatastoreClient(channel=channel)148        # Setup request149        project_id = 'projectId-1969970175'150        mode = enums.CommitRequest.Mode.MODE_UNSPECIFIED151        mutations = []152        with pytest.raises(CustomException):153            client.commit(project_id, mode, mutations)154    def test_rollback(self):155        # Setup Expected Response156        expected_response = {}157        expected_response = datastore_pb2.RollbackResponse(**expected_response)158        # Mock the API response159        channel = ChannelStub(responses=[expected_response])160        client = datastore_v1.DatastoreClient(channel=channel)161        # Setup Request162        project_id = 'projectId-1969970175'163        transaction = b'-34'164        response = client.rollback(project_id, transaction)165        assert expected_response == response166        assert len(channel.requests) == 1167        expected_request = datastore_pb2.RollbackRequest(168            project_id=project_id, transaction=transaction)169        actual_request = channel.requests[0][1]170        assert expected_request == actual_request171    def test_rollback_exception(self):172        # Mock the API response173        channel = ChannelStub(responses=[CustomException()])174        client = datastore_v1.DatastoreClient(channel=channel)175        # Setup request176        project_id = 'projectId-1969970175'177        transaction = b'-34'178        with pytest.raises(CustomException):179            client.rollback(project_id, transaction)180    def test_allocate_ids(self):181        # Setup Expected Response182        expected_response = {}183        expected_response = datastore_pb2.AllocateIdsResponse(184            **expected_response)185        # Mock the API response186        channel = ChannelStub(responses=[expected_response])187        client = datastore_v1.DatastoreClient(channel=channel)188        # Setup Request189        project_id = 'projectId-1969970175'190        keys = []191        response = client.allocate_ids(project_id, keys)192        assert expected_response == response193        assert len(channel.requests) == 1194        expected_request = datastore_pb2.AllocateIdsRequest(195            project_id=project_id, keys=keys)196        actual_request = channel.requests[0][1]197        assert expected_request == actual_request198    def test_allocate_ids_exception(self):199        # Mock the API response200        channel = ChannelStub(responses=[CustomException()])201        client = datastore_v1.DatastoreClient(channel=channel)202        # Setup request203        project_id = 'projectId-1969970175'204        keys = []205        with pytest.raises(CustomException):206            client.allocate_ids(project_id, keys)207    def test_reserve_ids(self):208        # Setup Expected Response209        expected_response = {}210        expected_response = datastore_pb2.ReserveIdsResponse(211            **expected_response)212        # Mock the API response213        channel = ChannelStub(responses=[expected_response])214        client = datastore_v1.DatastoreClient(channel=channel)215        # Setup Request216        project_id = 'projectId-1969970175'217        keys = []218        response = client.reserve_ids(project_id, keys)219        assert expected_response == response220        assert len(channel.requests) == 1221        expected_request = datastore_pb2.ReserveIdsRequest(222            project_id=project_id, keys=keys)223        actual_request = channel.requests[0][1]224        assert expected_request == actual_request225    def test_reserve_ids_exception(self):226        # Mock the API response227        channel = ChannelStub(responses=[CustomException()])228        client = datastore_v1.DatastoreClient(channel=channel)229        # Setup request230        project_id = 'projectId-1969970175'231        keys = []232        with pytest.raises(CustomException):...project.py
Source:project.py  
1# vim: tabstop=4 shiftwidth=4 softtabstop=42# Copyright 2010 United States Government as represented by the3# Administrator of the National Aeronautics and Space Administration.4# All Rights Reserved.5#6#    Licensed under the Apache License, Version 2.0 (the "License"); you may7#    not use this file except in compliance with the License. You may obtain8#    a copy of the License at9#10#         http://www.apache.org/licenses/LICENSE-2.011#12#    Unless required by applicable law or agreed to in writing, software13#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT14#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the15#    License for the specific language governing permissions and limitations16#    under the License.17"""18URL patterns for managing Nova projects.19"""20from django.conf.urls.defaults import *21urlpatterns = patterns('',22    url(r'^(?P<project_id>[^/]+)/$',23        'django_openstack.nova.views.projects.detail',24        name='nova_project'),25    url(r'^(?P<project_id>[^/]+)/manage/(?P<username>[^/]+)/',26        'django_openstack.nova.views.projects.edit_user',27        name='nova_project_edit_user'),28    url(r'^(?P<project_id>[^/]+)/manage$',29        'django_openstack.nova.views.projects.manage',30        name='nova_project_manage'),31    url(r'^(?P<project_id>[^/]+)/download/credentials$',32        'django_openstack.nova.views.projects.download_credentials',33        name='nova_download_credentials'),34    url(r'^(?P<project_id>[^/]+)/images$',35        'django_openstack.nova.views.images.index',36        name='nova_images'),37    url(r'^(?P<project_id>[^/]+)/images/(?P<image_id>[^/]+)/launch$',38        'django_openstack.nova.views.images.launch',39        name='nova_images_launch'),40    url(r'^(?P<project_id>[^/]+)/images/(?P<image_id>[^/]+)/remove$',41        'django_openstack.nova.views.images.remove',42        name='nova_images_remove'),43    url(r'^(?P<project_id>[^/]+)/images/(?P<image_id>[^/]+)/update$',44        'django_openstack.nova.views.images.update',45        name='nova_images_update'),46    url(r'^(?P<project_id>[^/]+)/images/(?P<image_id>[^/]+)/detail$',47        'django_openstack.nova.views.images.detail',48        name='nova_images_detail'),49    url(r'^(?P<project_id>[^/]+)/images/(?P<image_id>[^/]+)$',50        'django_openstack.nova.views.images.privacy',51        name='nova_images_privacy'),52    url(r'^(?P<project_id>[^/]+)/instances$',53        'django_openstack.nova.views.instances.index',54        name='nova_instances'),55    url(r'^(?P<project_id>[^/]+)/instances/refresh$',56        'django_openstack.nova.views.instances.refresh',57        name='nova_instances_refresh'),58    url(r'^(?P<project_id>[^/]+)/instances/(?P<instance_id>[^/]+)/refresh$',59        'django_openstack.nova.views.instances.refresh_detail',60        name='nova_instances_refresh_detail'),61    url(r'^(?P<project_id>[^/]+)/instances/terminate$',62        'django_openstack.nova.views.instances.terminate',63        name='nova_instances_terminate'),64    url(r'^(?P<project_id>[^/]+)/instances/(?P<instance_id>[^/]+)$',65        'django_openstack.nova.views.instances.detail',66        name='nova_instances_detail'),67    url(r'^(?P<project_id>[^/]+)/instances/(?P<instance_id>[^/]+)/performance$',68        'django_openstack.nova.views.instances.performance',69        name='nova_instances_performance'),70    url(r'^(?P<project_id>[^/]+)/instances/(?P<instance_id>[^/]+)/console$',71        'django_openstack.nova.views.instances.console',72        name='nova_instances_console'),73    url(r'^(?P<project_id>[^/]+)/instances/(?P<instance_id>[^/]+)/vnc$',74        'django_openstack.nova.views.instances.vnc',75        name='nova_instances_vnc'),76    url(r'^(?P<project_id>[^/]+)/instances/(?P<instance_id>.*)/update$',77        'django_openstack.nova.views.instances.update',78        name='nova_instance_update'),79    url(r'^(?P<project_id>[^/]+)/instances/(?P<instance_id>[^/]+)/graph/(?P<graph_name>[^/]+)$',80        'django_openstack.nova.views.instances.graph',81        name='nova_instances_graph'),82    url(r'^(?P<project_id>[^/]+)/keys$',83        'django_openstack.nova.views.keypairs.index',84        name='nova_keypairs'),85    url(r'^(?P<project_id>[^/]+)/keys/add$',86        'django_openstack.nova.views.keypairs.add',87        name='nova_keypairs_add'),88    url(r'^(?P<project_id>[^/]+)/keys/delete$',89        'django_openstack.nova.views.keypairs.delete',90        name='nova_keypairs_delete'),91    url(r'^(?P<project_id>[^/]+)/keys/(?P<key_name>.*)/download$',92        'django_openstack.nova.views.keypairs.download',93        name='nova_keypairs_download'),94    url(r'^(?P<project_id>[^/]+)/securitygroups/$',95        'django_openstack.nova.views.securitygroups.index',96        name='nova_securitygroups'),97    url(r'^(?P<project_id>[^/]+)/securitygroups/add$',98        'django_openstack.nova.views.securitygroups.add',99        name='nova_securitygroups_add'),100    url(r'^(?P<project_id>[^/]+)/securitygroups/(?P<group_name>[^/]+)$',101        'django_openstack.nova.views.securitygroups.detail',102        name='nova_securitygroups_detail'),103    url(r'^(?P<project_id>[^/]+)/securitygroups/(?P<group_name>[^/]+)/authorize/$',104        'django_openstack.nova.views.securitygroups.authorize',105        name='nova_securitygroups_authorize'),106    url(r'^(?P<project_id>[^/]+)/securitygroups/(?P<group_name>[^/]+)/delete/$',107        'django_openstack.nova.views.securitygroups.delete',108        name='nova_securitygroups_delete'),109    url(r'^(?P<project_id>[^/]+)/securitygroups/(?P<group_name>.*)/revoke/$',110        'django_openstack.nova.views.securitygroups.revoke',111        name='nova_securitygroups_revoke'),112    url(r'^(?P<project_id>[^/]+)/volumes/$',113        'django_openstack.nova.views.volumes.index',114        name='nova_volumes'),115    url(r'^(?P<project_id>[^/]+)/volumes/add$',116        'django_openstack.nova.views.volumes.add',117        name='nova_volumes_add'),118    url(r'^(?P<project_id>[^/]+)/volumes/attach$',119        'django_openstack.nova.views.volumes.attach',120        name='nova_volumes_attach'),121    url(r'^(?P<project_id>[^/]+)/volumes/(?P<volume_id>[^/]+)/detach$',122        'django_openstack.nova.views.volumes.detach',123        name='nova_volumes_detach'),124    url(r'^(?P<project_id>[^/]+)/volumes/(?P<volume_id>[^/]+)/delete$',125        'django_openstack.nova.views.volumes.delete',126        name='nova_volumes_delete'),127    url(r'^(?P<project_id>[^/]+)/floatingips$',128        'django_openstack.nova.views.floatingips.index',129        name='nova_floatingips'),130    url(r'^(?P<project_id>[^/]+)/floatingips/allocate$',131        'django_openstack.nova.views.floatingips.allocate',132        name='nova_floatingips_allocate'),133    url(r'^(?P<project_id>[^/]+)/floatingips/(?P<floating_ip>[^/]+)/release$',134        'django_openstack.nova.views.floatingips.release',135        name='nova_floatingips_release'),136    url(r'^(?P<project_id>[^/]+)/floatingips/associate$',137        'django_openstack.nova.views.floatingips.associate',138        name='nova_floatingips_associate'),139    url(r'^(?P<project_id>[^/]+)/floatingips/(?P<floating_ip>[^/]+)/disassociate$',140        'django_openstack.nova.views.floatingips.disassociate',141        name='nova_floatingips_disassociate'),...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
