Bläddra i källkod

Move GCEGatewayService under GCENetwork

Ehsan Chiniforooshan 8 år sedan
förälder
incheckning
689acd5f78

+ 32 - 0
cloudbridge/cloud/providers/gce/resources.py

@@ -15,6 +15,7 @@ from cloudbridge.cloud.base.resources import BaseBucket
 from cloudbridge.cloud.base.resources import BaseBucketObject
 from cloudbridge.cloud.base.resources import BaseBucketObject
 from cloudbridge.cloud.base.resources import BaseFloatingIP
 from cloudbridge.cloud.base.resources import BaseFloatingIP
 from cloudbridge.cloud.base.resources import BaseFloatingIPContainer
 from cloudbridge.cloud.base.resources import BaseFloatingIPContainer
+from cloudbridge.cloud.base.resources import BaseGatewayContainer
 from cloudbridge.cloud.base.resources import BaseInstance
 from cloudbridge.cloud.base.resources import BaseInstance
 from cloudbridge.cloud.base.resources import BaseInternetGateway
 from cloudbridge.cloud.base.resources import BaseInternetGateway
 from cloudbridge.cloud.base.resources import BaseKeyPair
 from cloudbridge.cloud.base.resources import BaseKeyPair
@@ -29,6 +30,7 @@ from cloudbridge.cloud.base.resources import BaseVMFirewall
 from cloudbridge.cloud.base.resources import BaseVMFirewallRule
 from cloudbridge.cloud.base.resources import BaseVMFirewallRule
 from cloudbridge.cloud.base.resources import BaseVMType
 from cloudbridge.cloud.base.resources import BaseVMType
 from cloudbridge.cloud.base.resources import BaseVolume
 from cloudbridge.cloud.base.resources import BaseVolume
+from cloudbridge.cloud.base.resources import ClientPagedResultList
 from cloudbridge.cloud.base.resources import ServerPagedResultList
 from cloudbridge.cloud.base.resources import ServerPagedResultList
 from cloudbridge.cloud.interfaces.resources import GatewayState
 from cloudbridge.cloud.interfaces.resources import GatewayState
 from cloudbridge.cloud.interfaces.resources import InstanceState
 from cloudbridge.cloud.interfaces.resources import InstanceState
@@ -1192,6 +1194,7 @@ class GCENetwork(BaseNetwork):
     def __init__(self, provider, network):
     def __init__(self, provider, network):
         super(GCENetwork, self).__init__(provider)
         super(GCENetwork, self).__init__(provider)
         self._network = network
         self._network = network
+        self._gateway_container = GCEGatewayContainer(provider, self)
 
 
     @property
     @property
     def resource_url(self):
     def resource_url(self):
@@ -1255,6 +1258,10 @@ class GCENetwork(BaseNetwork):
         self_link = self._network.get('selfLink')
         self_link = self._network.get('selfLink')
         self._network = self._provider.parse_url(self_link).get_resource()
         self._network = self._provider.parse_url(self_link).get_resource()
 
 
+    @property
+    def gateways(self):
+        return self._gateway_container
+
 
 
 class GCEFloatingIPContainer(BaseFloatingIPContainer):
 class GCEFloatingIPContainer(BaseFloatingIPContainer):
 
 
@@ -1459,6 +1466,31 @@ class GCERouter(BaseRouter):
         cb.log.warning('Not implemented')
         cb.log.warning('Not implemented')
 
 
 
 
+class GCEGatewayContainer(BaseGatewayContainer):
+    _DEFAULT_GATEWAY_NAME = 'default-internet-gateway'
+    _GATEWAY_URL_PREFIX = 'global/gateways/'
+
+    def __init__(self, provider, network):
+        super(GCEGatewayContainer, self).__init__(provider, network)
+        self._default_internet_gateway = GCEInternetGateway(
+            provider,
+            {'id': (GCEGatewayContainer._GATEWAY_URL_PREFIX +
+                    GCEGatewayContainer._DEFAULT_GATEWAY_NAME),
+             'name': GCEGatewayContainer._DEFAULT_GATEWAY_NAME})
+
+    def get_or_create_inet_gateway(self, name):
+        GCEInternetGateway.assert_valid_resource_name(name)
+        return self._default_internet_gateway
+
+    def delete(self, gateway):
+        pass
+
+    def list(self, limit=None, marker=None):
+        return ClientPagedResultList(self._provider,
+                                     [self._default_internet_gateway],
+                                     limit=limit, marker=marker)
+
+
 class GCEInternetGateway(BaseInternetGateway):
 class GCEInternetGateway(BaseInternetGateway):
 
 
     def __init__(self, provider, gateway):
     def __init__(self, provider, gateway):

+ 0 - 23
cloudbridge/cloud/providers/gce/services.py

@@ -8,7 +8,6 @@ from cloudbridge.cloud.base.resources import ClientPagedResultList
 from cloudbridge.cloud.base.resources import ServerPagedResultList
 from cloudbridge.cloud.base.resources import ServerPagedResultList
 from cloudbridge.cloud.base.services import BaseBucketService
 from cloudbridge.cloud.base.services import BaseBucketService
 from cloudbridge.cloud.base.services import BaseComputeService
 from cloudbridge.cloud.base.services import BaseComputeService
-from cloudbridge.cloud.base.services import BaseGatewayService
 from cloudbridge.cloud.base.services import BaseImageService
 from cloudbridge.cloud.base.services import BaseImageService
 from cloudbridge.cloud.base.services import BaseInstanceService
 from cloudbridge.cloud.base.services import BaseInstanceService
 from cloudbridge.cloud.base.services import BaseKeyPairService
 from cloudbridge.cloud.base.services import BaseKeyPairService
@@ -33,7 +32,6 @@ from retrying import retry
 
 
 from .resources import GCEFirewallsDelegate
 from .resources import GCEFirewallsDelegate
 from .resources import GCEInstance
 from .resources import GCEInstance
-from .resources import GCEInternetGateway
 from .resources import GCEKeyPair
 from .resources import GCEKeyPair
 from .resources import GCEMachineImage
 from .resources import GCEMachineImage
 from .resources import GCENetwork
 from .resources import GCENetwork
@@ -566,7 +564,6 @@ class GCENetworkingService(BaseNetworkingService):
         self._network_service = GCENetworkService(self.provider)
         self._network_service = GCENetworkService(self.provider)
         self._subnet_service = GCESubnetService(self.provider)
         self._subnet_service = GCESubnetService(self.provider)
         self._router_service = GCERouterService(self.provider)
         self._router_service = GCERouterService(self.provider)
-        self._gateway_service = GCEGatewayService(self.provider)
 
 
     @property
     @property
     def networks(self):
     def networks(self):
@@ -765,26 +762,6 @@ class GCERouterService(BaseRouterService):
             return None
             return None
 
 
 
 
-class GCEGatewayService(BaseGatewayService):
-    _DEFAULT_GATEWAY_NAME = 'default-internet-gateway'
-    _GATEWAY_URL_PREFIX = 'global/gateways/'
-
-    def __init__(self, provider):
-        super(GCEGatewayService, self).__init__(provider)
-        self._default_internet_gateway = GCEInternetGateway(
-            provider,
-            {'id': (GCEGatewayService._GATEWAY_URL_PREFIX +
-                    GCEGatewayService._DEFAULT_GATEWAY_NAME),
-             'name': GCEGatewayService._DEFAULT_GATEWAY_NAME})
-
-    def get_or_create_inet_gateway(self, name):
-        GCEInternetGateway.assert_valid_resource_name(name)
-        return self._default_internet_gateway
-
-    def delete(self, gateway):
-        pass
-
-
 class GCESubnetService(BaseSubnetService):
 class GCESubnetService(BaseSubnetService):
 
 
     def __init__(self, provider):
     def __init__(self, provider):

+ 2 - 2
tox.ini

@@ -21,14 +21,14 @@ setenv =
     MOTO_AMIS_PATH=./test/fixtures/custom_amis.json
     MOTO_AMIS_PATH=./test/fixtures/custom_amis.json
     aws: CB_TEST_PROVIDER=aws
     aws: CB_TEST_PROVIDER=aws
     azure: CB_TEST_PROVIDER=azure
     azure: CB_TEST_PROVIDER=azure
-    openstack: CB_TEST_PROVIDER=openstack
     gce: CB_TEST_PROVIDER=gce
     gce: CB_TEST_PROVIDER=gce
+    openstack: CB_TEST_PROVIDER=openstack
 passenv =
 passenv =
     CB_USE_MOCK_PROVIDERS
     CB_USE_MOCK_PROVIDERS
     aws: CB_IMAGE_AWS CB_INSTANCE_TYPE_AWS CB_PLACEMENT_AWS AWS_ACCESS_KEY AWS_SECRET_KEY
     aws: CB_IMAGE_AWS CB_INSTANCE_TYPE_AWS CB_PLACEMENT_AWS AWS_ACCESS_KEY AWS_SECRET_KEY
     azure: AZURE_SUBSCRIPTION_ID AZURE_CLIENT_ID AZURE_SECRET AZURE_TENANT AZURE_REGION_NAME AZURE_RESOURCE_GROUP AZURE_STORAGE_ACCOUNT AZURE_VM_DEFAULT_USER_NAME AZURE_PUBLIC_KEY_STORAGE_TABLE_NAME
     azure: AZURE_SUBSCRIPTION_ID AZURE_CLIENT_ID AZURE_SECRET AZURE_TENANT AZURE_REGION_NAME AZURE_RESOURCE_GROUP AZURE_STORAGE_ACCOUNT AZURE_VM_DEFAULT_USER_NAME AZURE_PUBLIC_KEY_STORAGE_TABLE_NAME
-    openstack:  CB_IMAGE_OS CB_INSTANCE_TYPE_OS CB_PLACEMENT_OS OS_AUTH_URL OS_PASSWORD OS_PROJECT_NAME OS_TENANT_NAME OS_USERNAME OS_REGION_NAME OS_USER_DOMAIN_NAME OS_PROJECT_DOMAIN_NAME NOVA_SERVICE_NAME
     gce: CB_IMAGE_GCE CB_INSTANCE_TYPE_GCE CB_PLACEMENT_GCE GCE_DEFAULT_REGION GCE_DEFAULT_ZONE GCE_PROJECT_NAME GCE_SERVICE_CREDS_FILE GCE_SERVICE_CREDS_DICT
     gce: CB_IMAGE_GCE CB_INSTANCE_TYPE_GCE CB_PLACEMENT_GCE GCE_DEFAULT_REGION GCE_DEFAULT_ZONE GCE_PROJECT_NAME GCE_SERVICE_CREDS_FILE GCE_SERVICE_CREDS_DICT
+    openstack:  CB_IMAGE_OS CB_INSTANCE_TYPE_OS CB_PLACEMENT_OS OS_AUTH_URL OS_PASSWORD OS_PROJECT_NAME OS_TENANT_NAME OS_USERNAME OS_REGION_NAME OS_USER_DOMAIN_NAME OS_PROJECT_DOMAIN_NAME NOVA_SERVICE_NAME
 deps =
 deps =
     -rrequirements.txt
     -rrequirements.txt
     coverage
     coverage