components/openstack/nova/files/solariszones/driver.py
changeset 7583 612b249c2397
parent 7475 6144ac72c2b3
child 7593 3f5b9ebe028b
--- a/components/openstack/nova/files/solariszones/driver.py	Tue Jan 17 10:39:22 2017 -0800
+++ b/components/openstack/nova/files/solariszones/driver.py	Tue Jan 17 12:30:21 2017 -0700
@@ -1,7 +1,7 @@
 # Copyright 2011 Justin Santa Barbara
 # All Rights Reserved.
 #
-# Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
 #
 #    Licensed under the Apache License, Version 2.0 (the "License"); you may
 #    not use this file except in compliance with the License. You may obtain
@@ -570,6 +570,14 @@
 
         return self._archive_manager
 
+    def _initialize_volume_connection(self, context, volume_id, connection):
+        connection_info = self._volume_api.initialize_connection(context,
+                                                                 volume_id,
+                                                                 connection)
+        connection_info['serial'] = volume_id
+
+        return connection_info
+
     def init_host(self, host):
         """Initialize anything that is necessary for the driver to function,
         including catching up with currently running VM's on the given host.
@@ -1385,10 +1393,9 @@
         volume_id = volume['id']
 
         connector = self.get_volume_connector(instance)
-        connection_info = self._volume_api.initialize_connection(context,
-                                                                 volume_id,
-                                                                 connector)
-        connection_info['serial'] = volume_id
+        connection_info = self._initialize_volume_connection(context,
+                                                             volume_id,
+                                                             connector)
 
         # Check connection_info to determine if the provided volume is
         # local to this compute node. If it is, then don't use it for
@@ -3099,7 +3106,10 @@
                     raise exception.ResizeError(reason=msg)
 
             if root_ci['driver_volume_type'] == 'iscsi':
-                volume_id = root_ci['data']['volume_id']
+                try:
+                    volume_id = root_ci['data']['volume_id']
+                except KeyError:
+                    volume_id = root_ci.get('serial')
             else:
                 volume_id = root_ci['serial']
 
@@ -3253,8 +3263,9 @@
             old_rvid = instance.system_metadata.get('old_instance_volid')
             if old_rvid:
                 connector = self.get_volume_connector(instance)
-                connection_info = self._volume_api.initialize_connection(
-                    context, old_rvid, connector)
+                connection_info = self._initialize_volume_connection(context,
+                                                                     old_rvid,
+                                                                     connector)
 
                 new_rvid = instance.system_metadata['new_instance_volid']
 
@@ -3419,10 +3430,9 @@
         :param samehost: is the resize happening on the same host
         """
         connector = self.get_volume_connector(instance)
-        connection_info = self._volume_api.initialize_connection(context,
-                                                                 replacement,
-                                                                 connector)
-        connection_info['serial'] = replacement
+        connection_info = self._initialize_volume_connection(context,
+                                                             replacement,
+                                                             connector)
         rootmp = instance.root_device_name
 
         if samehost:
@@ -3489,9 +3499,9 @@
         old_rvid = instance.system_metadata.get('old_instance_volid')
         if old_rvid:
             connector = self.get_volume_connector(instance)
-            connection_info = self._volume_api.initialize_connection(context,
-                                                                     old_rvid,
-                                                                     connector)
+            connection_info = self._initialize_volume_connection(context,
+                                                                 old_rvid,
+                                                                 connector)
 
             new_rvid = instance.system_metadata['new_instance_volid']
             self._volume_api.detach(context, new_rvid)