diff --git a/docs/conf.py b/docs/conf.py index 35efdc8b..3f7f2d73 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -55,7 +55,7 @@ # General information about the project. project = u'cloudbridge' -copyright = u'2015, GVL and Galaxy Projects' +copyright = u'2017, GVL and Galaxy Projects' author = u'GVL and Galaxy Projects' # The version info for the project you're documenting, acts as replacement for diff --git a/docs/topics/contributor_guide.rst b/docs/topics/contributor_guide.rst index c6879807..b49442c2 100644 --- a/docs/topics/contributor_guide.rst +++ b/docs/topics/contributor_guide.rst @@ -8,6 +8,7 @@ CloudBridge Provider. :maxdepth: 1 Design Goals + Design Decisions Testing Provider Development Walkthrough Release Process diff --git a/docs/topics/design-decisions.rst b/docs/topics/design-decisions.rst new file mode 100644 index 00000000..3b84c87f --- /dev/null +++ b/docs/topics/design-decisions.rst @@ -0,0 +1,20 @@ +Design decisions +~~~~~~~~~~~~~~~~ + +This document captures outcomes and, in some cases, the through process behind +some of the design decisions that took place while architecting CloudBridge. +It is intended as a reference. + +- **Require zone parameter when creating a default subnet.** + + Placement zone is required because it is an explicit application decision, + even though ideally *default* would not require input. Before requiring it, + the implementations would create a subnet in each availability zone and return + the first one in the list. This could potentially return different values over + time. Another factor influencing the decision was the example of creating a + volume followed by creating an instance with presumably the two needing to be + in the same zone. By requiring the zone across the board, it is less likely to + lead to a miss match. (Related to 63_.) + + + .. _63: https://github.com/gvlproject/cloudbridge/issues/63 diff --git a/docs/topics/design_goals.rst b/docs/topics/design_goals.rst index 7941e737..3912331d 100644 --- a/docs/topics/design_goals.rst +++ b/docs/topics/design_goals.rst @@ -10,7 +10,7 @@ Design Goals against each provider to make sure their application is compatible. 3. Opt for a minimum set of features that a cloud provider will support, - instead of a lowest common denominator approach. This means that reasonably + instead of a lowest common denominator approach. This means that reasonably mature clouds like Amazon and OpenStack are used as the benchmark against which functionality & features are determined. Therefore, there is a definite expectation that the cloud infrastructure will support a compute @@ -22,4 +22,4 @@ Design Goals By wrapping the cloud provider's native SDK and doing the minimal work necessary to adapt the interface, we can achieve greater development speed and reliability since the native provider SDK is most likely to have both - properties. \ No newline at end of file + properties. diff --git a/test/test_network_service.py b/test/test_network_service.py index 0b7ffbf6..2ca50841 100644 --- a/test/test_network_service.py +++ b/test/test_network_service.py @@ -1,6 +1,7 @@ import test.helpers as helpers from test.helpers import ProviderTestBase +from test.helpers import get_provider_test_data from test.helpers import standard_interface_tests as sit from cloudbridge.cloud.interfaces.resources import FloatingIP @@ -177,5 +178,6 @@ def _cleanup(net, subnet, router, gateway): @helpers.skipIfNoService(['networking.networks']) def test_default_network(self): - subnet = self.provider.networking.subnets.get_or_create_default() + subnet = self.provider.networking.subnets.get_or_create_default( + zone=get_provider_test_data(self.provider, 'placement')) self.assertIsInstance(subnet, Subnet)