Procházet zdrojové kódy

Add a method for retrieving a 'default' network

Enis Afgan před 9 roky
rodič
revize
03d832c2ef

+ 13 - 0
cloudbridge/cloud/interfaces/services.py

@@ -513,6 +513,19 @@ class NetworkService(PageableObjectMixin, CloudService):
         """
         """
         pass
         pass
 
 
+    @abstractmethod
+    def get_default(self):
+        """
+        Return a default network for the account or ``None`` if not found.
+
+        A default network is one marked as such by the provider or matches the
+        default network name used by this library (e.g., CloudBridgeNet).
+
+        :rtype: ``object`` of :class:`.Network`
+        :return: a Network object
+        """
+        pass
+
     @abstractmethod
     @abstractmethod
     def list(self, limit=None, marker=None):
     def list(self, limit=None, marker=None):
         """
         """

+ 15 - 0
cloudbridge/cloud/providers/aws/services.py

@@ -868,6 +868,21 @@ class AWSNetworkService(BaseNetworkService):
             return AWSNetwork(self.provider, network[0])
             return AWSNetwork(self.provider, network[0])
         return None
         return None
 
 
+    def get_default(self):
+        default_vpc = None
+        vpcs = self.provider.vpc_conn.get_all_vpcs()
+        for vpc in vpcs:
+            if vpc.is_default:
+                default_vpc = AWSNetwork(self.provider, vpc)
+                break
+        if not default_vpc:
+            for vpc in vpcs:
+                if vpc.tags.get('Name', '') == \
+                   AWSNetwork.CB_DEFAULT_NETWORK_NAME:
+                    default_vpc = AWSNetwork(self.provider, vpc)
+                    break
+        return default_vpc
+
     def list(self, limit=None, marker=None):
     def list(self, limit=None, marker=None):
         networks = [AWSNetwork(self.provider, network)
         networks = [AWSNetwork(self.provider, network)
                     for network in self.provider.vpc_conn.get_all_vpcs()]
                     for network in self.provider.vpc_conn.get_all_vpcs()]

+ 6 - 0
cloudbridge/cloud/providers/openstack/services.py

@@ -738,6 +738,12 @@ class OpenStackNetworkService(BaseNetworkService):
         network = (n for n in self.list() if n.id == network_id)
         network = (n for n in self.list() if n.id == network_id)
         return next(network, None)
         return next(network, None)
 
 
+    def get_default(self):
+        for net in self.list():
+            if net.name == OpenStackNetwork.CB_DEFAULT_NETWORK_NAME:
+                return net
+        return None
+
     def list(self, limit=None, marker=None):
     def list(self, limit=None, marker=None):
         networks = [OpenStackNetwork(self.provider, network)
         networks = [OpenStackNetwork(self.provider, network)
                     for network in self.provider.neutron.list_networks()
                     for network in self.provider.neutron.list_networks()