瀏覽代碼

Move Volumes, Snapshots, Buckets to Storage

Ehsan Chiniforooshan 8 年之前
父節點
當前提交
062df4c372

+ 11 - 17
cloudbridge/cloud/providers/gce/provider.py

@@ -15,11 +15,10 @@ from googleapiclient import discovery
 from oauth2client.client import GoogleCredentials
 from oauth2client.service_account import ServiceAccountCredentials
 
-from .services import GCEBlockStoreService
 from .services import GCEComputeService
 from .services import GCENetworkService
 from .services import GCESecurityService
-from .services import GCSObjectStoreService
+from .services import GCPStorageService
 
 
 class GCPResourceUrl(object):
@@ -192,17 +191,16 @@ class GCECloudProvider(BaseCloudProvider):
 
         # service connections, lazily initialized
         self._gce_compute = None
-        self._gcp_storage = None
+        self._gcs_storage = None
 
         # Initialize provider services
         self._compute = GCEComputeService(self)
         self._security = GCESecurityService(self)
         self._network = GCENetworkService(self)
-        self._block_store = GCEBlockStoreService(self)
-        self._object_store = GCSObjectStoreService(self)
+        self._storage = GCPStorageService(self)
 
         self._compute_resources = GCPResources(self.gce_compute)
-        self._storage_resources = GCPResources(self.gcp_storage)
+        self._storage_resources = GCPResources(self.gcs_storage)
 
     @property
     def compute(self):
@@ -217,12 +215,8 @@ class GCECloudProvider(BaseCloudProvider):
         return self._security
 
     @property
-    def block_store(self):
-        return self._block_store
-
-    @property
-    def object_store(self):
-        return self._object_store
+    def storage(self):
+        return self._storage
 
     @property
     def gce_compute(self):
@@ -231,10 +225,10 @@ class GCECloudProvider(BaseCloudProvider):
         return self._gce_compute
 
     @property
-    def gcp_storage(self):
-        if not self._gcp_storage:
-            self._gcp_storage = self._connect_gcp_storage()
-        return self._gcp_storage
+    def gcs_storage(self):
+        if not self._gcs_storage:
+            self._gcs_storage = self._connect_gcs_storage()
+        return self._gcs_storage
 
     @property
     def _credentials(self):
@@ -244,7 +238,7 @@ class GCECloudProvider(BaseCloudProvider):
         else:
             return GoogleCredentials.get_application_default()
 
-    def _connect_gcp_storage(self):
+    def _connect_gcs_storage(self):
         return discovery.build('storage', 'v1', credentials=self._credentials)
 
     def _connect_gce_compute(self):

+ 2 - 2
cloudbridge/cloud/providers/gce/resources.py

@@ -1602,7 +1602,7 @@ class GCEVolume(BaseVolume):
         """
         Create a snapshot of this Volume.
         """
-        return self._provider.block_store.snapshots.create(
+        return self._provider.storage.snapshots.create(
             name, self, description)
 
     def delete(self):
@@ -1734,7 +1734,7 @@ class GCESnapshot(BaseSnapshot):
                                  zone=placement,
                                  body=disk_body)
                          .execute())
-        return self._provider.block_store.volumes.get(
+        return self._provider.storage.volumes.get(
             operation.get('targetLink'))
 
 

+ 11 - 6
cloudbridge/cloud/providers/gce/services.py

@@ -5,18 +5,18 @@ from collections import namedtuple
 import cloudbridge as cb
 from cloudbridge.cloud.base.resources import ClientPagedResultList
 from cloudbridge.cloud.base.resources import ServerPagedResultList
-from cloudbridge.cloud.base.services import BaseBlockStoreService
+from cloudbridge.cloud.base.services import BaseBucketService
 from cloudbridge.cloud.base.services import BaseComputeService
 from cloudbridge.cloud.base.services import BaseImageService
 from cloudbridge.cloud.base.services import BaseInstanceService
 from cloudbridge.cloud.base.services import BaseInstanceTypesService
 from cloudbridge.cloud.base.services import BaseKeyPairService
 from cloudbridge.cloud.base.services import BaseNetworkService
-from cloudbridge.cloud.base.services import BaseObjectStoreService
 from cloudbridge.cloud.base.services import BaseRegionService
 from cloudbridge.cloud.base.services import BaseSecurityGroupService
 from cloudbridge.cloud.base.services import BaseSecurityService
 from cloudbridge.cloud.base.services import BaseSnapshotService
+from cloudbridge.cloud.base.services import BaseStorageService
 from cloudbridge.cloud.base.services import BaseSubnetService
 from cloudbridge.cloud.base.services import BaseVolumeService
 from cloudbridge.cloud.interfaces.resources import PlacementZone
@@ -851,14 +851,15 @@ class GCESubnetService(BaseSubnetService):
         self._provider.wait_for_operation(response, region=subnet.region)
 
 
-class GCEBlockStoreService(BaseBlockStoreService):
+class GCPStorageService(BaseStorageService):
 
     def __init__(self, provider):
-        super(GCEBlockStoreService, self).__init__(provider)
+        super(GCPStorageService, self).__init__(provider)
 
         # Initialize provider services
         self._volume_svc = GCEVolumeService(self.provider)
         self._snapshot_svc = GCESnapshotService(self.provider)
+        self._bucket_svc = GCSBucketService(self.provider)
 
     @property
     def volumes(self):
@@ -868,6 +869,10 @@ class GCEBlockStoreService(BaseBlockStoreService):
     def snapshots(self):
         return self._snapshot_svc
 
+    @property
+    def buckets(self):
+        return self._bucket_svc
+
 
 class GCEVolumeService(BaseVolumeService):
 
@@ -1073,10 +1078,10 @@ class GCESnapshotService(BaseSnapshotService):
             return None
 
 
-class GCSObjectStoreService(BaseObjectStoreService):
+class GCSBucketService(BaseBucketService):
 
     def __init__(self, provider):
-        super(GCSObjectStoreService, self).__init__(provider)
+        super(GCSBucketService, self).__init__(provider)
 
     def get(self, bucket_id):
         """

+ 2 - 1
setup.py

@@ -25,6 +25,7 @@ REQS_BASE = [
     'oslo.i18n>=3.15.3'
 ]
 REQS_AWS = ['boto3']
+REQS_GCP = ['google-api-python-client']
 REQS_OPENSTACK = [
     'openstacksdk',
     'python-novaclient>=7.0.0',
@@ -35,7 +36,7 @@ REQS_OPENSTACK = [
     'python-keystoneclient>=3.13.0',
     'requests>=2.14.2'
 ]
-REQS_FULL = REQS_BASE + REQS_AWS + REQS_OPENSTACK
+REQS_FULL = REQS_BASE + REQS_AWS + REQS_GCP + REQS_OPENSTACK
 # httpretty is required with/for moto 1.0.0 or AWS tests fail
 REQS_DEV = ([
     'tox>=2.1.1',