Просмотр исходного кода

Added test and fixed up subnet.get_or_create_default()

Nuwan Goonasekera 8 лет назад
Родитель
Сommit
3bc138d11e

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

@@ -753,6 +753,8 @@ class SubnetService(PageableObjectMixin, CloudService):
     def get_or_create_default(self, zone=None):
     def get_or_create_default(self, zone=None):
         """
         """
         Return a default subnet for the account or create one if not found.
         Return a default subnet for the account or create one if not found.
+        This provides a convenience method for obtaining a network if you
+        are not particularly concerned with how the network is structured.
 
 
         A default network is one marked as such by the provider or matches the
         A default network is one marked as such by the provider or matches the
         default name used by this library (e.g., CloudBridgeNet).
         default name used by this library (e.g., CloudBridgeNet).

+ 1 - 1
cloudbridge/cloud/providers/aws/services.py

@@ -887,7 +887,7 @@ class AWSSubnetService(BaseSubnetService):
                 return AWSSubnet(self.provider, sn)
                 return AWSSubnet(self.provider, sn)
         # No provider-default Subnet exists, try to create it (net + subnets)
         # No provider-default Subnet exists, try to create it (net + subnets)
         default_net = self.provider.network.create(
         default_net = self.provider.network.create(
-            name=AWSNetwork.CB_DEFAULT_NETWORK_NAME)
+            name=AWSNetwork.CB_DEFAULT_NETWORK_NAME, cidr_block='10.0.0.0/16')
         # Create a subnet in each of the region's zones
         # Create a subnet in each of the region's zones
         region = self.provider.compute.regions.get(
         region = self.provider.compute.regions.get(
             self.provider.vpc_conn.region.name)
             self.provider.vpc_conn.region.name)

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

@@ -839,12 +839,12 @@ class OpenStackSubnetService(BaseSubnetService):
                                    name=OpenStackSubnet.CB_DEFAULT_SUBNET_NAME)
                                    name=OpenStackSubnet.CB_DEFAULT_SUBNET_NAME)
             router = self.provider.network.create_router(
             router = self.provider.network.create_router(
                 OpenStackRouter.CB_DEFAULT_ROUTER_NAME)
                 OpenStackRouter.CB_DEFAULT_ROUTER_NAME)
-            for n in self.provider.network.list():
-                if n.external:
-                    external_net = n
-                    break
-            router.attach_network(external_net.id)
-            router.add_route(sn.id)
+            router.attach_subnet(sn)
+            gteway = (self.provider.networking.gateways
+                      .get_or_create_inet_gateway(
+                          OpenStackInternetGateway.CB_DEFAULT_INET_GATEWAY_NAME
+                          ))
+            router.attach_gateway(gteway)
             return sn
             return sn
         except NeutronClientException:
         except NeutronClientException:
             return None
             return None

+ 6 - 0
test/test_network_service.py

@@ -4,6 +4,7 @@ from test.helpers import ProviderTestBase
 from test.helpers import standard_interface_tests as sit
 from test.helpers import standard_interface_tests as sit
 
 
 from cloudbridge.cloud.interfaces.resources import RouterState
 from cloudbridge.cloud.interfaces.resources import RouterState
+from cloudbridge.cloud.interfaces.resources import Subnet
 
 
 
 
 class CloudNetworkServiceTestCase(ProviderTestBase):
 class CloudNetworkServiceTestCase(ProviderTestBase):
@@ -156,3 +157,8 @@ class CloudNetworkServiceTestCase(ProviderTestBase):
             # TODO: add a check for routes after that's been implemented
             # TODO: add a check for routes after that's been implemented
 
 
         sit.check_delete(self, self.provider.networking.routers, router)
         sit.check_delete(self, self.provider.networking.routers, router)
+
+    @helpers.skipIfNoService(['networking.networks'])
+    def test_default_network(self):
+        subnet = self.provider.networking.subnets.get_or_create_default()
+        self.assertIsInstance(subnet, Subnet)