--- a/components/openstack/nova/files/solariszones/driver.py Fri Feb 03 11:14:15 2017 -0800
+++ b/components/openstack/nova/files/solariszones/driver.py Fri Feb 03 13:18:56 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
@@ -538,6 +538,14 @@
return self._kstat_control
+ 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.
@@ -1215,9 +1223,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
@@ -2533,7 +2541,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']
@@ -2681,8 +2692,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']
@@ -2852,9 +2864,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 = self._initialize_volume_connection(context,
+ replacement,
+ connector)
connection_info['serial'] = replacement
rootmp = instance.root_device_name
@@ -2922,9 +2934,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)