Prechádzať zdrojové kódy

Add lifecycle management to Network objects

Enis Afgan 10 rokov pred
rodič
commit
dbcc235d21

+ 9 - 1
cloudbridge/cloud/base/resources.py

@@ -19,6 +19,7 @@ from cloudbridge.cloud.interfaces.resources import LaunchConfig
 from cloudbridge.cloud.interfaces.resources import MachineImage
 from cloudbridge.cloud.interfaces.resources import MachineImageState
 from cloudbridge.cloud.interfaces.resources import Network
+from cloudbridge.cloud.interfaces.resources import NetworkState
 from cloudbridge.cloud.interfaces.resources import ObjectLifeCycleMixin
 from cloudbridge.cloud.interfaces.resources import PageableObjectMixin
 from cloudbridge.cloud.interfaces.resources import PlacementZone
@@ -590,7 +591,7 @@ class BaseBucket(BasePageableObjectMixin, Bucket, BaseCloudResource):
                                       self.name)
 
 
-class BaseNetwork(Network, BaseCloudResource):
+class BaseNetwork(BaseCloudResource, Network, BaseObjectLifeCycleMixin):
 
     def __init__(self, provider):
         super(BaseNetwork, self).__init__(provider)
@@ -599,6 +600,13 @@ class BaseNetwork(Network, BaseCloudResource):
         return "<CB-{0}: {1} ({2})>".format(self.__class__.__name__,
                                             self.id, self.name)
 
+    def wait_till_ready(self, timeout=None, interval=None):
+        self.wait_for(
+            [NetworkState.AVAILABLE],
+            terminal_states=[NetworkState.ERROR],
+            timeout=timeout,
+            interval=interval)
+
     def __eq__(self, other):
         return (isinstance(other, Network) and
                 # pylint:disable=protected-access

+ 7 - 0
cloudbridge/cloud/providers/aws/resources.py

@@ -766,6 +766,13 @@ class AWSNetwork(BaseNetwork):
             cb_subnet.name = name
         return cb_subnet
 
+    def refresh(self):
+        """
+        Refreshes the state of this instance by re-querying the cloud provider
+        for its latest state.
+        """
+        return self.state
+
 
 class AWSSubnet(BaseSubnet):
 

+ 7 - 0
cloudbridge/cloud/providers/openstack/resources.py

@@ -592,6 +592,13 @@ class OpenStackNetwork(BaseNetwork):
                   .get('subnet'))
         return OpenStackSubnet(self._provider, subnet)
 
+    def refresh(self):
+        """
+        Refreshes the state of this network by re-querying the cloud provider
+        for its latest state.
+        """
+        return self.state
+
 
 class OpenStackSubnet(BaseSubnet):