From d88ef81579d9415eaa05bd3818d65bb9411dd45c Mon Sep 17 00:00:00 2001 From: David-Sarah Hopwood Date: Tue, 12 Feb 2013 01:58:51 +0000 Subject: [PATCH] OpenStack: add openstack.container config parameter. Signed-off-by: David-Sarah Hopwood --- .../cloud/openstack/openstack_container.py | 6 ++-- src/allmydata/test/test_client.py | 29 +++++++++++++++---- src/allmydata/test/test_storage.py | 2 ++ 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/src/allmydata/storage/backends/cloud/openstack/openstack_container.py b/src/allmydata/storage/backends/cloud/openstack/openstack_container.py index 2da588a8..cacd3752 100644 --- a/src/allmydata/storage/backends/cloud/openstack/openstack_container.py +++ b/src/allmydata/storage/backends/cloud/openstack/openstack_container.py @@ -26,10 +26,11 @@ def configure_openstack_container(storedir, config): auth_service_url = config.get_config("storage", "openstack.url", DEFAULT_AUTH_URLS[provider]) username = config.get_config("storage", "openstack.username") + container_name = config.get_config("storage", "openstack.container") reauth_period = 23*60*60 #seconds auth_client = AuthenticationClient(api_key, provider, auth_service_url, username, reauth_period) - return OpenStackContainer(auth_client) + return OpenStackContainer(auth_client, container_name) class UnexpectedAuthenticationResponse(Exception): @@ -144,8 +145,9 @@ class OpenStackContainer(ContainerRetryMixin, ContainerListMixin): I represent a real OpenStack container. """ - def __init__(self, auth_client): + def __init__(self, auth_client, container_name): self._auth_client = auth_client + self._container_name = container_name #self.client = OpenStackClient(auth_client) #self.ServiceError = OpenStackError diff --git a/src/allmydata/test/test_client.py b/src/allmydata/test/test_client.py index e15b212c..ab3b0f6a 100644 --- a/src/allmydata/test/test_client.py +++ b/src/allmydata/test/test_client.py @@ -358,14 +358,17 @@ class Basic(testutil.ReallyEqualMixin, unittest.TestCase): "enabled = true\n" + "backend = cloud.openstack\n" + "openstack.provider = rackspace\n" + - "openstack.username = alex\n") + "openstack.username = alex\n" + + "openstack.container = test\n") fileutil.write(os.path.join(basedir, "tahoe.cfg"), config) c = client.Client(basedir) mock_AuthenticationClient.assert_called_with("dummy", "rackspace", "https://identity.api.rackspacecloud.com/v1.0", "alex", 23*60*60) - self.failUnlessEqual(len(mock_OpenStackContainer.mock_calls), 1) + container_call_args = mock_OpenStackContainer.call_args_list + self.failUnlessEqual(len(container_call_args), 1) + self.failUnlessEqual(container_call_args[0][0][1:], ("test",)) server = c.getServiceNamed("storage") self.failUnless(isinstance(server.backend, CloudBackend), server.backend) @@ -380,7 +383,8 @@ class Basic(testutil.ReallyEqualMixin, unittest.TestCase): "readonly = true\n" + "backend = cloud.openstack\n" + "openstack.provider = rackspace\n" + - "openstack.username = alex\n") + "openstack.username = alex\n" + + "openstack.container = test\n") self.failUnlessRaises(InvalidValueError, client.Client, basedir) def test_openstack_config_no_username(self): @@ -392,7 +396,21 @@ class Basic(testutil.ReallyEqualMixin, unittest.TestCase): "[storage]\n" + "enabled = true\n" + "backend = cloud.openstack\n" + - "openstack.provider = rackspace\n") + "openstack.provider = rackspace\n" + + "openstack.container = test\n") + self.failUnlessRaises(MissingConfigEntry, client.Client, basedir) + + def test_openstack_config_no_container(self): + basedir = "client.Basic.test_openstack_config_no_container" + os.mkdir(basedir) + self._write_secret(basedir, "openstack_api_key") + fileutil.write(os.path.join(basedir, "tahoe.cfg"), + BASECONFIG + + "[storage]\n" + + "enabled = true\n" + + "backend = cloud.openstack\n" + + "openstack.provider = rackspace\n" + + "openstack.username = alex\n") self.failUnlessRaises(MissingConfigEntry, client.Client, basedir) def test_openstack_config_no_api_key(self): @@ -404,7 +422,8 @@ class Basic(testutil.ReallyEqualMixin, unittest.TestCase): "enabled = true\n" + "backend = cloud.openstack\n" + "openstack.provider = rackspace\n" + - "openstack.username = alex\n") + "openstack.username = alex\n" + + "openstack.container = test\n") self.failUnlessRaises(MissingConfigEntry, client.Client, basedir) def test_expire_mutable_false_unsupported(self): diff --git a/src/allmydata/test/test_storage.py b/src/allmydata/test/test_storage.py index 724957c1..f93c24b0 100644 --- a/src/allmydata/test/test_storage.py +++ b/src/allmydata/test/test_storage.py @@ -405,6 +405,7 @@ class OpenStackCloudBackend(ServiceParentMixin, WorkdirMixin, unittest.TestCase) PROVIDER = "rackspace" AUTH_SERVICE_URL = "auth_service_url" USERNAME = "username" + CONTAINER = "container" API_KEY = "api_key" STORAGE_URL = "storage_url" CDN_MANAGEMENT_URL = "cdn_management_url" @@ -444,6 +445,7 @@ class OpenStackCloudBackend(ServiceParentMixin, WorkdirMixin, unittest.TestCase) 'openstack.provider': self.PROVIDER, 'openstack.url': self.AUTH_SERVICE_URL, 'openstack.username': self.USERNAME, + 'openstack.container': self.CONTAINER, } from allmydata.node import _None class MockConfig(object): -- 2.45.2