ソースを参照

Fixed bug in aws get_instance and added region_name and service_name env
vars to openstack

nuwan_ag 10 年 前
コミット
9726a4cc99
3 ファイル変更14 行追加6 行削除
  1. 1 1
      cloudbridge/providers/aws/services.py
  2. 12 3
      cloudbridge/providers/openstack/impl.py
  3. 1 2
      tox.ini

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

@@ -418,7 +418,7 @@ class AWSComputeService(ComputeService):
         reservation = self.provider.ec2_conn.get_all_reservations(
         reservation = self.provider.ec2_conn.get_all_reservations(
             instance_ids=[instance_id])
             instance_ids=[instance_id])
         if reservation:
         if reservation:
-            return AWSInstance(self.provider, reservation.instances[0])
+            return AWSInstance(self.provider, reservation[0].instances[0])
 
 
     def find_instance(self, name):
     def find_instance(self, name):
         """
         """

+ 12 - 3
cloudbridge/providers/openstack/impl.py

@@ -34,6 +34,8 @@ class OpenStackCloudProviderV1(BaseCloudProvider):
             'tenant_name', os.environ.get('OS_TENANT_NAME', None))
             'tenant_name', os.environ.get('OS_TENANT_NAME', None))
         self.auth_url = self._get_config_value(
         self.auth_url = self._get_config_value(
             'auth_url', os.environ.get('OS_AUTH_URL', None))
             'auth_url', os.environ.get('OS_AUTH_URL', None))
+        self.region_name = self._get_config_value(
+            'region_name', os.environ.get('OS_REGION_NAME', None))
 
 
         self.nova = self._connect_nova()
         self.nova = self._connect_nova()
         self.keystone = self._connect_keystone()
         self.keystone = self._connect_keystone()
@@ -73,10 +75,14 @@ class OpenStackCloudProviderV1(BaseCloudProvider):
         api_version = self._get_config_value(
         api_version = self._get_config_value(
             'os_compute_api_version',
             'os_compute_api_version',
             os.environ.get('OS_COMPUTE_API_VERSION', 2))
             os.environ.get('OS_COMPUTE_API_VERSION', 2))
+        service_name = self._get_config_value(
+            'nova_service_name',
+            os.environ.get('NOVA_SERVICE_NAME', None))
 
 
         return nova_client.Client(
         return nova_client.Client(
             api_version, username=self.username, api_key=self.password,
             api_version, username=self.username, api_key=self.password,
-            project_id=self.tenant_name, auth_url=self.auth_url)
+            project_id=self.tenant_name, auth_url=self.auth_url,
+            region_name=self.region_name, service_name=service_name)
 
 
     def _connect_keystone(self):
     def _connect_keystone(self):
         """
         """
@@ -93,7 +99,8 @@ class OpenStackCloudProviderV1(BaseCloudProvider):
             auth_url=self.auth_url,
             auth_url=self.auth_url,
             username=self.username,
             username=self.username,
             password=self.password,
             password=self.password,
-            tenant_name=self.tenant_name)
+            tenant_name=self.tenant_name,
+            region_name=self.region_name)
         keystone.authenticate()
         keystone.authenticate()
         return keystone
         return keystone
 
 
@@ -113,6 +120,8 @@ class OpenStackCloudProviderV1(BaseCloudProvider):
         """
         """
         Get an openstack swift client object for the given cloud.
         Get an openstack swift client object for the given cloud.
         """
         """
+        os_options = {'region_name': self.region_name}
         return swift_client.Connection(
         return swift_client.Connection(
             authurl=self.auth_url, auth_version='2', user=self.username,
             authurl=self.auth_url, auth_version='2', user=self.username,
-            key=self.password, tenant_name=self.tenant_name)
+            key=self.password, tenant_name=self.tenant_name,
+            os_options=os_options)

+ 1 - 2
tox.ini

@@ -8,11 +8,10 @@ envlist = py27, py33, py34, pypy
 
 
 [testenv]
 [testenv]
 commands = {envpython} setup.py test
 commands = {envpython} setup.py test
-passenv = AWS_ACCESS_KEY AWS_SECRET_KEY OS_AUTH_URL OS_PASSWORD OS_TENANT_NAME OS_USERNAME CB_AMI CB_INSTANCE_TYPE CB_IMAGE CB_FLAVOR CB_TEST_PROVIDER
+passenv = AWS_ACCESS_KEY AWS_SECRET_KEY OS_AUTH_URL OS_PASSWORD OS_TENANT_NAME OS_USERNAME OS_REGION_NAME NOVA_SERVICE_NAME CB_AMI CB_INSTANCE_TYPE CB_IMAGE CB_FLAVOR CB_TEST_PROVIDER
 
 
 # Run coverage for python27 - omit interfaces.py since it's a behaviour spec only.
 # Run coverage for python27 - omit interfaces.py since it's a behaviour spec only.
 [testenv:py27]
 [testenv:py27]
 commands = {envpython} -m coverage run --branch --source=cloudbridge --omit=cloudbridge/providers/interfaces/* setup.py test
 commands = {envpython} -m coverage run --branch --source=cloudbridge --omit=cloudbridge/providers/interfaces/* setup.py test
-passenv = AWS_ACCESS_KEY AWS_SECRET_KEY OS_AUTH_URL OS_PASSWORD OS_TENANT_NAME OS_USERNAME CB_AMI CB_INSTANCE_TYPE CB_IMAGE CB_FLAVOR CB_TEST_PROVIDER
 deps =
 deps =
     coverage
     coverage