author | Sean Wilcox <sean.wilcox@oracle.com> |
Tue, 21 Jun 2016 10:06:06 -0600 | |
changeset 6260 | c6db55d32fc3 |
parent 6178 | a11e4cbcf3d2 |
child 6283 | 20926a1ac3fe |
permissions | -rw-r--r-- |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1 |
# Copyright 2011 Justin Santa Barbara |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2 |
# All Rights Reserved. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3 |
# |
5252
947514442d05
22513201 nova resize revert will fail if there are volumes attached
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5196
diff
changeset
|
4 |
# Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
5 |
# |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
6 |
# Licensed under the Apache License, Version 2.0 (the "License"); you may |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
7 |
# not use this file except in compliance with the License. You may obtain |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
8 |
# a copy of the License at |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
9 |
# |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
10 |
# http://www.apache.org/licenses/LICENSE-2.0 |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
11 |
# |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
12 |
# Unless required by applicable law or agreed to in writing, software |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
13 |
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
14 |
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
15 |
# License for the specific language governing permissions and limitations |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
16 |
# under the License. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
17 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
18 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
19 |
Driver for Solaris Zones (nee Containers): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
20 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
21 |
|
4695
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
22 |
import base64 |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
23 |
import glob |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
24 |
import os |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
25 |
import platform |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
26 |
import shutil |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
27 |
import tempfile |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
28 |
import uuid |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
29 |
|
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
30 |
from openstack_common import get_ovsdb_info |
5279
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
31 |
import rad.bindings.com.oracle.solaris.rad.archivemgr_1 as archivemgr |
4669
342ab6111bb5
20957828 swift Makefile has typo for COMPONENT_BUGDB
david.comay@oracle.com
parents:
4585
diff
changeset
|
32 |
import rad.bindings.com.oracle.solaris.rad.kstat_1 as kstat |
342ab6111bb5
20957828 swift Makefile has typo for COMPONENT_BUGDB
david.comay@oracle.com
parents:
4585
diff
changeset
|
33 |
import rad.bindings.com.oracle.solaris.rad.zonemgr_1 as zonemgr |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
34 |
import rad.client |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
35 |
import rad.connect |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
36 |
from solaris_install.target.size import Size |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
37 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
38 |
from cinderclient import exceptions as cinder_exception |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
39 |
from cinderclient.v1 import client as v1_client |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
40 |
from eventlet import greenthread |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
41 |
from keystoneclient import exceptions as keystone_exception |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
42 |
from lxml import etree |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
43 |
from oslo_concurrency import processutils |
4553
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
44 |
from oslo_config import cfg |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
45 |
from oslo_log import log as logging |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
46 |
from oslo_serialization import jsonutils |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
47 |
from oslo_utils import excutils |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
48 |
from oslo_utils import strutils |
4695
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
49 |
from passlib.hash import sha256_crypt |
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
50 |
|
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
51 |
from nova.api.metadata import password |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
52 |
from nova.compute import power_state |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
53 |
from nova.compute import task_states |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
54 |
from nova.compute import vm_states |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
55 |
from nova.console import type as ctype |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
56 |
from nova import conductor |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
57 |
from nova import context as nova_context |
4695
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
58 |
from nova import crypto |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
59 |
from nova import exception |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
60 |
from nova.i18n import _, _LE, _LI |
5607
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
61 |
from nova.image import API as glance_api |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
62 |
from nova.image import glance |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
63 |
from nova.network.neutronv2 import api as neutronv2_api |
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
64 |
from nova import objects |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
65 |
from nova.objects import flavor as flavor_obj |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
66 |
from nova.openstack.common import fileutils |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
67 |
from nova import utils |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
68 |
from nova.virt import driver |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
69 |
from nova.virt import event as virtevent |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
70 |
from nova.virt import hardware |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
71 |
from nova.virt import images |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
72 |
from nova.virt.solariszones import sysconfig |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
73 |
from nova.volume.cinder import API |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
74 |
from nova.volume.cinder import cinderclient |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
75 |
from nova.volume.cinder import translate_volume_exception |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
76 |
from nova.volume.cinder import _untranslate_volume_summary_view |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
77 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
78 |
solariszones_opts = [ |
6014
83c60536394d
PSARC/2016/242 Nova boot volume placement
Niall Power <niall.power@oracle.com>
parents:
5949
diff
changeset
|
79 |
cfg.StrOpt('boot_volume_type', |
83c60536394d
PSARC/2016/242 Nova boot volume placement
Niall Power <niall.power@oracle.com>
parents:
5949
diff
changeset
|
80 |
default=None, |
83c60536394d
PSARC/2016/242 Nova boot volume placement
Niall Power <niall.power@oracle.com>
parents:
5949
diff
changeset
|
81 |
help='Cinder volume type to use for boot volumes'), |
83c60536394d
PSARC/2016/242 Nova boot volume placement
Niall Power <niall.power@oracle.com>
parents:
5949
diff
changeset
|
82 |
cfg.StrOpt('boot_volume_az', |
83c60536394d
PSARC/2016/242 Nova boot volume placement
Niall Power <niall.power@oracle.com>
parents:
5949
diff
changeset
|
83 |
default=None, |
83c60536394d
PSARC/2016/242 Nova boot volume placement
Niall Power <niall.power@oracle.com>
parents:
5949
diff
changeset
|
84 |
help='Cinder availability zone to use for boot volumes'), |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
85 |
cfg.StrOpt('glancecache_dirname', |
5609
318813fd0ac2
PSARC/2016/172 Making OpenStack Nova's image cache sharable
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5608
diff
changeset
|
86 |
default='/var/share/nova/images', |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
87 |
help='Default path to Glance cache for Solaris Zones.'), |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
88 |
cfg.StrOpt('live_migration_cipher', |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
89 |
help='Cipher to use for encryption of memory traffic during ' |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
90 |
'live migration. If not specified, a common encryption ' |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
91 |
'algorithm will be negotiated. Options include: none or ' |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
92 |
'the name of a supported OpenSSL cipher algorithm.'), |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
93 |
cfg.StrOpt('solariszones_snapshots_directory', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
94 |
default='$instances_path/snapshots', |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
95 |
help='Location to store snapshots before uploading them to the ' |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
96 |
'Glance image service.'), |
4781
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
97 |
cfg.StrOpt('zones_suspend_path', |
5192
f5359fbbaadd
22151922 zones_suspend_path needs update based on post-PSARC discussion
david.comay@oracle.com
parents:
5191
diff
changeset
|
98 |
default='/var/share/zones/SYSsuspend', |
4781
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
99 |
help='Default path for suspend images for Solaris Zones.'), |
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
100 |
cfg.BoolOpt('solariszones_boot_options', |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
101 |
default=True, |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
102 |
help='Allow kernel boot options to be set in instance ' |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
103 |
'metadata.'), |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
104 |
] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
105 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
106 |
CONF = cfg.CONF |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
107 |
CONF.register_opts(solariszones_opts) |
4553
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
108 |
CONF.import_opt('vncserver_proxyclient_address', 'nova.vnc') |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
109 |
LOG = logging.getLogger(__name__) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
110 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
111 |
# These should match the strings returned by the zone_state_str() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
112 |
# function in the (private) libzonecfg library. These values are in turn |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
113 |
# returned in the 'state' string of the Solaris Zones' RAD interface by |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
114 |
# the zonemgr(3RAD) provider. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
115 |
ZONE_STATE_CONFIGURED = 'configured' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
116 |
ZONE_STATE_INCOMPLETE = 'incomplete' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
117 |
ZONE_STATE_UNAVAILABLE = 'unavailable' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
118 |
ZONE_STATE_INSTALLED = 'installed' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
119 |
ZONE_STATE_READY = 'ready' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
120 |
ZONE_STATE_RUNNING = 'running' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
121 |
ZONE_STATE_SHUTTING_DOWN = 'shutting_down' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
122 |
ZONE_STATE_DOWN = 'down' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
123 |
ZONE_STATE_MOUNTED = 'mounted' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
124 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
125 |
# Mapping between zone state and Nova power_state. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
126 |
SOLARISZONES_POWER_STATE = { |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
127 |
ZONE_STATE_CONFIGURED: power_state.NOSTATE, |
1990
c1c6cc703d7a
18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
1944
diff
changeset
|
128 |
ZONE_STATE_INCOMPLETE: power_state.NOSTATE, |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
129 |
ZONE_STATE_UNAVAILABLE: power_state.NOSTATE, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
130 |
ZONE_STATE_INSTALLED: power_state.SHUTDOWN, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
131 |
ZONE_STATE_READY: power_state.RUNNING, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
132 |
ZONE_STATE_RUNNING: power_state.RUNNING, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
133 |
ZONE_STATE_SHUTTING_DOWN: power_state.RUNNING, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
134 |
ZONE_STATE_DOWN: power_state.RUNNING, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
135 |
ZONE_STATE_MOUNTED: power_state.NOSTATE |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
136 |
} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
137 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
138 |
# Solaris Zones brands as defined in brands(5). |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
139 |
ZONE_BRAND_LABELED = 'labeled' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
140 |
ZONE_BRAND_SOLARIS = 'solaris' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
141 |
ZONE_BRAND_SOLARIS_KZ = 'solaris-kz' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
142 |
ZONE_BRAND_SOLARIS10 = 'solaris10' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
143 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
144 |
# Mapping between supported zone brands and the name of the corresponding |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
145 |
# brand template. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
146 |
ZONE_BRAND_TEMPLATE = { |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
147 |
ZONE_BRAND_SOLARIS: 'SYSdefault', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
148 |
ZONE_BRAND_SOLARIS_KZ: 'SYSsolaris-kz', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
149 |
} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
150 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
151 |
MAX_CONSOLE_BYTES = 102400 |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
152 |
|
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
153 |
VNC_CONSOLE_BASE_FMRI = 'svc:/application/openstack/nova/zone-vnc-console' |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
154 |
# Required in order to create a zone VNC console SMF service instance |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
155 |
VNC_SERVER_PATH = '/usr/bin/vncserver' |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
156 |
XTERM_PATH = '/usr/bin/xterm' |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
157 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
158 |
ROOTZPOOL_RESOURCE = 'rootzpool' |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
159 |
|
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
160 |
# The underlying Solaris Zones framework does not expose a specific |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
161 |
# version number, instead relying on feature tests to identify what is |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
162 |
# and what is not supported. A HYPERVISOR_VERSION is defined here for |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
163 |
# Nova's use but it generally should not be changed unless there is a |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
164 |
# incompatible change such as concerning kernel zone live migration. |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
165 |
HYPERVISOR_VERSION = '5.11' |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
166 |
|
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
167 |
shared_storage = ['iscsi', 'fibre_channel'] |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
168 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
169 |
|
4781
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
170 |
def lookup_resource(zone, resource): |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
171 |
"""Lookup specified resource from specified Solaris Zone.""" |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
172 |
try: |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
173 |
val = zone.getResources(zonemgr.Resource(resource)) |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
174 |
except rad.client.ObjectError: |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
175 |
return None |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
176 |
except Exception: |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
177 |
raise |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
178 |
return val[0] if val else None |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
179 |
|
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
180 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
181 |
def lookup_resource_property(zone, resource, prop, filter=None): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
182 |
"""Lookup specified property from specified Solaris Zone resource.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
183 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
184 |
val = zone.getResourceProperties(zonemgr.Resource(resource, filter), |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
185 |
[prop]) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
186 |
except rad.client.ObjectError: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
187 |
return None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
188 |
except Exception: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
189 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
190 |
return val[0].value if val else None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
191 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
192 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
193 |
def lookup_resource_property_value(zone, resource, prop, value): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
194 |
"""Lookup specified property with value from specified Solaris Zone |
5949
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
195 |
resource. Returns resource object if matching value is found, else None |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
196 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
197 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
198 |
resources = zone.getResources(zonemgr.Resource(resource)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
199 |
for resource in resources: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
200 |
for propertee in resource.properties: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
201 |
if propertee.name == prop and propertee.value == value: |
5949
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
202 |
return resource |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
203 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
204 |
return None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
205 |
except rad.client.ObjectError: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
206 |
return None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
207 |
except Exception: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
208 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
209 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
210 |
|
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
211 |
def zonemgr_strerror(ex): |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
212 |
"""Format the payload from a zonemgr(3RAD) rad.client.ObjectError |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
213 |
exception into a sensible error string that can be logged. Newlines |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
214 |
are converted to a colon-space string to create a single line. |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
215 |
|
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
216 |
If the exception was something other than rad.client.ObjectError, |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
217 |
just return it as a string. |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
218 |
""" |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
219 |
if not isinstance(ex, rad.client.ObjectError): |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
220 |
return str(ex) |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
221 |
payload = ex.get_payload() |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
222 |
if payload.code == zonemgr.ErrorCode.NONE: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
223 |
return str(ex) |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
224 |
error = [str(payload.code)] |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
225 |
if payload.str is not None and payload.str != '': |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
226 |
error.append(payload.str) |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
227 |
if payload.stderr is not None and payload.stderr != '': |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
228 |
stderr = payload.stderr.rstrip() |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
229 |
error.append(stderr.replace('\n', ': ')) |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
230 |
result = ': '.join(error) |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
231 |
return result |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
232 |
|
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
233 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
234 |
class SolarisVolumeAPI(API): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
235 |
""" Extending the volume api to support additional cinder sub-commands |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
236 |
""" |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
237 |
@translate_volume_exception |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
238 |
def create(self, context, size, name, description, snapshot=None, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
239 |
image_id=None, volume_type=None, metadata=None, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
240 |
availability_zone=None, source_volume=None): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
241 |
"""Clone the source volume by calling the cinderclient version of |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
242 |
create with a source_volid argument |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
243 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
244 |
:param context: the context for the clone |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
245 |
:param size: size of the new volume, must be the same as the source |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
246 |
volume |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
247 |
:param name: display_name of the new volume |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
248 |
:param description: display_description of the new volume |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
249 |
:param snapshot: Snapshot object |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
250 |
:param image_id: image_id to create the volume from |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
251 |
:param volume_type: type of volume |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
252 |
:param metadata: Additional metadata for the volume |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
253 |
:param availability_zone: zone:host where the volume is to be created |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
254 |
:param source_volume: Volume object |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
255 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
256 |
Returns a volume object |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
257 |
""" |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
258 |
client = cinderclient(context) |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
259 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
260 |
if snapshot is not None: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
261 |
snapshot_id = snapshot['id'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
262 |
else: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
263 |
snapshot_id = None |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
264 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
265 |
if source_volume is not None: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
266 |
source_volid = source_volume['id'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
267 |
else: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
268 |
source_volid = None |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
269 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
270 |
kwargs = dict(snapshot_id=snapshot_id, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
271 |
volume_type=volume_type, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
272 |
user_id=context.user_id, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
273 |
project_id=context.project_id, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
274 |
availability_zone=availability_zone, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
275 |
metadata=metadata, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
276 |
imageRef=image_id, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
277 |
source_volid=source_volid) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
278 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
279 |
if isinstance(client, v1_client.Client): |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
280 |
kwargs['display_name'] = name |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
281 |
kwargs['display_description'] = description |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
282 |
else: |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
283 |
kwargs['name'] = name |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
284 |
kwargs['description'] = description |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
285 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
286 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
287 |
item = cinderclient(context).volumes.create(size, **kwargs) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
288 |
return _untranslate_volume_summary_view(context, item) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
289 |
except cinder_exception.OverLimit: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
290 |
raise exception.OverQuota(overs='volumes') |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
291 |
except (cinder_exception.BadRequest, |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
292 |
keystone_exception.BadRequest) as reason: |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
293 |
raise exception.InvalidInput(reason=reason) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
294 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
295 |
@translate_volume_exception |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
296 |
def update(self, context, volume_id, fields): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
297 |
"""Update the fields of a volume for example used to rename a volume |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
298 |
via a call to cinderclient |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
299 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
300 |
:param context: the context for the update |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
301 |
:param volume_id: the id of the volume to update |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
302 |
:param fields: a dictionary of of the name/value pairs to update |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
303 |
""" |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
304 |
cinderclient(context).volumes.update(volume_id, **fields) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
305 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
306 |
@translate_volume_exception |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
307 |
def extend(self, context, volume, newsize): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
308 |
"""Extend the size of a cinder volume by calling the cinderclient |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
309 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
310 |
:param context: the context for the extend |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
311 |
:param volume: the volume object to extend |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
312 |
:param newsize: the new size of the volume in GB |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
313 |
""" |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
314 |
cinderclient(context).volumes.extend(volume, newsize) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
315 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
316 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
317 |
class ZoneConfig(object): |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
318 |
"""ZoneConfig - context manager for access zone configurations. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
319 |
Automatically opens the configuration for a zone and commits any changes |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
320 |
before exiting |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
321 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
322 |
def __init__(self, zone): |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
323 |
"""zone is a zonemgr object representing either a kernel zone or |
5190
fc9c815fce00
20410887 Solaris Nova driver should be resilient when network info is None
david.comay@oracle.com
parents:
4982
diff
changeset
|
324 |
non-global zone. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
325 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
326 |
self.zone = zone |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
327 |
self.editing = False |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
328 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
329 |
def __enter__(self): |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
330 |
"""enables the editing of the zone.""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
331 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
332 |
self.zone.editConfig() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
333 |
self.editing = True |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
334 |
return self |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
335 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
336 |
reason = zonemgr_strerror(ex) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
337 |
LOG.error(_("Unable to initialize editing of instance '%s' via " |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
338 |
"zonemgr(3RAD): %s") % (self.zone.name, reason)) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
339 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
340 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
341 |
def __exit__(self, exc_type, exc_val, exc_tb): |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
342 |
"""looks for any kind of exception before exiting. If one is found, |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
343 |
cancel any configuration changes and reraise the exception. If not, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
344 |
commit the new configuration. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
345 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
346 |
if exc_type is not None and self.editing: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
347 |
# We received some kind of exception. Cancel the config and raise. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
348 |
self.zone.cancelConfig() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
349 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
350 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
351 |
# commit the config |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
352 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
353 |
self.zone.commitConfig() |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
354 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
355 |
reason = zonemgr_strerror(ex) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
356 |
LOG.error(_("Unable to commit the new configuration for " |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
357 |
"instance '%s' via zonemgr(3RAD): %s") |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
358 |
% (self.zone.name, reason)) |
4551
aeda29f57900
21307395 nova ZoneConfig class should call cancelConfig when editConfig fails in __exit__
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
4550
diff
changeset
|
359 |
|
aeda29f57900
21307395 nova ZoneConfig class should call cancelConfig when editConfig fails in __exit__
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
4550
diff
changeset
|
360 |
# Last ditch effort to cleanup. |
aeda29f57900
21307395 nova ZoneConfig class should call cancelConfig when editConfig fails in __exit__
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
4550
diff
changeset
|
361 |
self.zone.cancelConfig() |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
362 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
363 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
364 |
def setprop(self, resource, prop, value): |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
365 |
"""sets a property for an existing resource OR creates a new resource |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
366 |
with the given property(s). |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
367 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
368 |
current = lookup_resource_property(self.zone, resource, prop) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
369 |
if current is not None and current == value: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
370 |
# the value is already set |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
371 |
return |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
372 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
373 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
374 |
if current is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
375 |
self.zone.addResource(zonemgr.Resource( |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
376 |
resource, [zonemgr.Property(prop, value)])) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
377 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
378 |
self.zone.setResourceProperties( |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
379 |
zonemgr.Resource(resource), |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
380 |
[zonemgr.Property(prop, value)]) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
381 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
382 |
reason = zonemgr_strerror(ex) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
383 |
LOG.error(_("Unable to set '%s' property on '%s' resource for " |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
384 |
"instance '%s' via zonemgr(3RAD): %s") |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
385 |
% (prop, resource, self.zone.name, reason)) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
386 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
387 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
388 |
def addresource(self, resource, props=None, ignore_exists=False): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
389 |
"""creates a new resource with an optional property list, or set the |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
390 |
property if the resource exists and ignore_exists is true. |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
391 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
392 |
:param ignore_exists: If the resource exists, set the property for the |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
393 |
resource. |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
394 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
395 |
if props is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
396 |
props = [] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
397 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
398 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
399 |
self.zone.addResource(zonemgr.Resource(resource, props)) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
400 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
401 |
if isinstance(ex, rad.client.ObjectError): |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
402 |
code = ex.get_payload().code |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
403 |
if (ignore_exists and |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
404 |
code == zonemgr.ErrorCode.RESOURCE_ALREADY_EXISTS): |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
405 |
self.zone.setResourceProperties(zonemgr.Resource( |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
406 |
resource, None), props) |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
407 |
return |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
408 |
reason = zonemgr_strerror(ex) |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
409 |
LOG.error(_("Unable to create new resource '%s' for instance '%s'" |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
410 |
"via zonemgr(3RAD): %s") |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
411 |
% (resource, self.zone.name, reason)) |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
412 |
raise |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
413 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
414 |
def removeresources(self, resource, props=None): |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
415 |
"""removes resources whose properties include the optional property |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
416 |
list specified in props. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
417 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
418 |
if props is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
419 |
props = [] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
420 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
421 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
422 |
self.zone.removeResources(zonemgr.Resource(resource, props)) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
423 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
424 |
reason = zonemgr_strerror(ex) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
425 |
LOG.error(_("Unable to remove resource '%s' for instance '%s' via " |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
426 |
"zonemgr(3RAD): %s") |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
427 |
% (resource, self.zone.name, reason)) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
428 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
429 |
|
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
430 |
def clear_resource_props(self, resource, props): |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
431 |
"""Clear property values of a given resource |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
432 |
""" |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
433 |
|
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
434 |
try: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
435 |
self.zone.clearResourceProperties(zonemgr.Resource(resource, None), |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
436 |
props) |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
437 |
except rad.client.ObjectError as ex: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
438 |
reason = zonemgr_strerror(ex) |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
439 |
LOG.error(_("Unable to clear '%s' property on '%s' resource for " |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
440 |
"instance '%s' via zonemgr(3RAD): %s") |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
441 |
% (props, resource, self.zone.name, reason)) |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
442 |
raise |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
443 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
444 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
445 |
class SolarisZonesDriver(driver.ComputeDriver): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
446 |
"""Solaris Zones Driver using the zonemgr(3RAD) and kstat(3RAD) providers. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
447 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
448 |
The interface to this class talks in terms of 'instances' (Amazon EC2 and |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
449 |
internal Nova terminology), by which we mean 'running virtual machine' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
450 |
(XenAPI terminology) or domain (Xen or libvirt terminology). |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
451 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
452 |
An instance has an ID, which is the identifier chosen by Nova to represent |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
453 |
the instance further up the stack. This is unfortunately also called a |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
454 |
'name' elsewhere. As far as this layer is concerned, 'instance ID' and |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
455 |
'instance name' are synonyms. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
456 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
457 |
Note that the instance ID or name is not human-readable or |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
458 |
customer-controlled -- it's an internal ID chosen by Nova. At the |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
459 |
nova.virt layer, instances do not have human-readable names at all -- such |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
460 |
things are only known higher up the stack. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
461 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
462 |
Most virtualization platforms will also have their own identity schemes, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
463 |
to uniquely identify a VM or domain. These IDs must stay internal to the |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
464 |
platform-specific layer, and never escape the connection interface. The |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
465 |
platform-specific layer is responsible for keeping track of which instance |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
466 |
ID maps to which platform-specific ID, and vice versa. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
467 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
468 |
Some methods here take an instance of nova.compute.service.Instance. This |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
469 |
is the data structure used by nova.compute to store details regarding an |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
470 |
instance, and pass them into this layer. This layer is responsible for |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
471 |
translating that generic data structure into terms that are specific to the |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
472 |
virtualization platform. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
473 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
474 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
475 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
476 |
capabilities = { |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
477 |
"has_imagecache": False, |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
478 |
"supports_recreate": True, |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
479 |
} |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
480 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
481 |
def __init__(self, virtapi): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
482 |
self.virtapi = virtapi |
5610
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
483 |
self._archive_manager = None |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
484 |
self._compute_event_callback = None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
485 |
self._conductor_api = conductor.API() |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
486 |
self._fc_hbas = None |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
487 |
self._fc_wwnns = None |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
488 |
self._fc_wwpns = None |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
489 |
self._host_stats = {} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
490 |
self._initiator = None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
491 |
self._install_engine = None |
5610
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
492 |
self._kstat_control = None |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
493 |
self._pagesize = os.sysconf('SC_PAGESIZE') |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
494 |
self._rad_connection = None |
5610
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
495 |
self._rootzpool_suffix = ROOTZPOOL_RESOURCE |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
496 |
self._uname = os.uname() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
497 |
self._validated_archives = list() |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
498 |
self._volume_api = SolarisVolumeAPI() |
5610
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
499 |
self._zone_manager = None |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
500 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
501 |
@property |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
502 |
def rad_connection(self): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
503 |
if self._rad_connection is None: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
504 |
self._rad_connection = rad.connect.connect_unix() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
505 |
else: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
506 |
# taken from rad.connect.RadConnection.__repr__ to look for a |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
507 |
# closed connection |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
508 |
if self._rad_connection._closed is not None: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
509 |
# the RAD connection has been lost. Reconnect to RAD |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
510 |
self._rad_connection = rad.connect.connect_unix() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
511 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
512 |
return self._rad_connection |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
513 |
|
5610
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
514 |
@property |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
515 |
def zone_manager(self): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
516 |
try: |
5610
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
517 |
if (self._zone_manager is None or |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
518 |
self._zone_manager._conn._closed is not None): |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
519 |
self._zone_manager = self.rad_connection.get_object( |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
520 |
zonemgr.ZoneManager()) |
5279
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
521 |
except Exception as ex: |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
522 |
reason = _("Unable to obtain RAD object: %s") % ex |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
523 |
raise exception.NovaException(reason) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
524 |
|
5610
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
525 |
return self._zone_manager |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
526 |
|
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
527 |
@property |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
528 |
def kstat_control(self): |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
529 |
try: |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
530 |
if (self._kstat_control is None or |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
531 |
self._kstat_control._conn._closed is not None): |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
532 |
self._kstat_control = self.rad_connection.get_object( |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
533 |
kstat.Control()) |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
534 |
except Exception as ex: |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
535 |
reason = _("Unable to obtain RAD object: %s") % ex |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
536 |
raise exception.NovaException(reason) |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
537 |
|
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
538 |
return self._kstat_control |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
539 |
|
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
540 |
@property |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
541 |
def archive_manager(self): |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
542 |
try: |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
543 |
if (self._archive_manager is None or |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
544 |
self._archive_manager._conn._closed is not None): |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
545 |
self._archive_manager = self.rad_connection.get_object( |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
546 |
archivemgr.ArchiveManager()) |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
547 |
except Exception as ex: |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
548 |
reason = _("Unable to obtain RAD object: %s") % ex |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
549 |
raise exception.NovaException(reason) |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
550 |
|
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
551 |
return self._archive_manager |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
552 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
553 |
def init_host(self, host): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
554 |
"""Initialize anything that is necessary for the driver to function, |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
555 |
including catching up with currently running VM's on the given host. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
556 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
557 |
# TODO(Vek): Need to pass context in for access to auth_token |
5610
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
558 |
pass |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
559 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
560 |
def cleanup_host(self, host): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
561 |
"""Clean up anything that is necessary for the driver gracefully stop, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
562 |
including ending remote sessions. This is optional. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
563 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
564 |
pass |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
565 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
566 |
def _get_fc_hbas(self): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
567 |
"""Get Fibre Channel HBA information.""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
568 |
if self._fc_hbas: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
569 |
return self._fc_hbas |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
570 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
571 |
out = None |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
572 |
try: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
573 |
out, err = utils.execute('/usr/sbin/fcinfo', 'hba-port') |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
574 |
except processutils.ProcessExecutionError: |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
575 |
return [] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
576 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
577 |
if out is None: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
578 |
raise RuntimeError(_("Cannot find any Fibre Channel HBAs")) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
579 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
580 |
hbas = [] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
581 |
hba = {} |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
582 |
for line in out.splitlines(): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
583 |
line = line.strip() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
584 |
# Collect the following hba-port data: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
585 |
# 1: Port WWN |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
586 |
# 2: State (online|offline) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
587 |
# 3: Node WWN |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
588 |
if line.startswith("HBA Port WWN:"): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
589 |
# New HBA port entry |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
590 |
hba = {} |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
591 |
wwpn = line.split()[-1] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
592 |
hba['port_name'] = wwpn |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
593 |
continue |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
594 |
elif line.startswith("Port Mode:"): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
595 |
mode = line.split()[-1] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
596 |
# Skip Target mode ports |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
597 |
if mode != 'Initiator': |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
598 |
break |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
599 |
elif line.startswith("State:"): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
600 |
state = line.split()[-1] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
601 |
hba['port_state'] = state |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
602 |
continue |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
603 |
elif line.startswith("Node WWN:"): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
604 |
wwnn = line.split()[-1] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
605 |
hba['node_name'] = wwnn |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
606 |
continue |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
607 |
if len(hba) == 3: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
608 |
hbas.append(hba) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
609 |
hba = {} |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
610 |
self._fc_hbas = hbas |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
611 |
return self._fc_hbas |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
612 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
613 |
def _get_fc_wwnns(self): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
614 |
"""Get Fibre Channel WWNNs from the system, if any.""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
615 |
hbas = self._get_fc_hbas() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
616 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
617 |
wwnns = [] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
618 |
for hba in hbas: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
619 |
if hba['port_state'] == 'online': |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
620 |
wwnn = hba['node_name'] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
621 |
wwnns.append(wwnn) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
622 |
return wwnns |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
623 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
624 |
def _get_fc_wwpns(self): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
625 |
"""Get Fibre Channel WWPNs from the system, if any.""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
626 |
hbas = self._get_fc_hbas() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
627 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
628 |
wwpns = [] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
629 |
for hba in hbas: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
630 |
if hba['port_state'] == 'online': |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
631 |
wwpn = hba['port_name'] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
632 |
wwpns.append(wwpn) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
633 |
return wwpns |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
634 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
635 |
def _get_iscsi_initiator(self): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
636 |
""" Return the iSCSI initiator node name IQN for this host """ |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
637 |
out, err = utils.execute('/usr/sbin/iscsiadm', 'list', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
638 |
'initiator-node') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
639 |
# Sample first line of command output: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
640 |
# Initiator node name: iqn.1986-03.com.sun:01:e00000000000.4f757217 |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
641 |
initiator_name_line = out.splitlines()[0] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
642 |
initiator_iqn = initiator_name_line.rsplit(' ', 1)[1] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
643 |
return initiator_iqn |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
644 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
645 |
def _get_zone_by_name(self, name): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
646 |
"""Return a Solaris Zones object via RAD by name.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
647 |
try: |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
648 |
zone = self.rad_connection.get_object( |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
649 |
zonemgr.Zone(), rad.client.ADRGlobPattern({'name': name})) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
650 |
except rad.client.NotFoundError: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
651 |
return None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
652 |
except Exception: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
653 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
654 |
return zone |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
655 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
656 |
def _get_state(self, zone): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
657 |
"""Return the running state, one of the power_state codes.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
658 |
return SOLARISZONES_POWER_STATE[zone.state] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
659 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
660 |
def _pages_to_kb(self, pages): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
661 |
"""Convert a number of pages of memory into a total size in KBytes.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
662 |
return (pages * self._pagesize) / 1024 |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
663 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
664 |
def _get_max_mem(self, zone): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
665 |
"""Return the maximum memory in KBytes allowed.""" |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
666 |
if zone.brand == ZONE_BRAND_SOLARIS: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
667 |
mem_resource = 'swap' |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
668 |
else: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
669 |
mem_resource = 'physical' |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
670 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
671 |
max_mem = lookup_resource_property(zone, 'capped-memory', mem_resource) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
672 |
if max_mem is not None: |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
673 |
return strutils.string_to_bytes("%sB" % max_mem) / 1024 |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
674 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
675 |
# If physical property in capped-memory doesn't exist, this may |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
676 |
# represent a non-global zone so just return the system's total |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
677 |
# memory. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
678 |
return self._pages_to_kb(os.sysconf('SC_PHYS_PAGES')) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
679 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
680 |
def _get_mem(self, zone): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
681 |
"""Return the memory in KBytes used by the domain.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
682 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
683 |
# There isn't any way of determining this from the hypervisor |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
684 |
# perspective in Solaris, so just return the _get_max_mem() value |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
685 |
# for now. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
686 |
return self._get_max_mem(zone) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
687 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
688 |
def _get_num_cpu(self, zone): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
689 |
"""Return the number of virtual CPUs for the domain. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
690 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
691 |
In the case of kernel zones, the number of virtual CPUs a zone |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
692 |
ends up with depends on whether or not there were 'virtual-cpu' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
693 |
or 'dedicated-cpu' resources in the configuration or whether |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
694 |
there was an assigned pool in the configuration. This algorithm |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
695 |
attempts to emulate what the virtual platform code does to |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
696 |
determine a number of virtual CPUs to use. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
697 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
698 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
699 |
# If a 'virtual-cpu' resource exists, use the minimum number of |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
700 |
# CPUs defined there. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
701 |
ncpus = lookup_resource_property(zone, 'virtual-cpu', 'ncpus') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
702 |
if ncpus is not None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
703 |
min = ncpus.split('-', 1)[0] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
704 |
if min.isdigit(): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
705 |
return int(min) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
706 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
707 |
# Otherwise if a 'dedicated-cpu' resource exists, use the maximum |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
708 |
# number of CPUs defined there. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
709 |
ncpus = lookup_resource_property(zone, 'dedicated-cpu', 'ncpus') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
710 |
if ncpus is not None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
711 |
max = ncpus.split('-', 1)[-1] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
712 |
if max.isdigit(): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
713 |
return int(max) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
714 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
715 |
# Finally if neither resource exists but the zone was assigned a |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
716 |
# pool in the configuration, the number of CPUs would be the size |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
717 |
# of the processor set. Currently there's no way of easily |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
718 |
# determining this so use the system's notion of the total number |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
719 |
# of online CPUs. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
720 |
return os.sysconf('SC_NPROCESSORS_ONLN') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
721 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
722 |
def _get_kstat_by_name(self, kstat_class, module, instance, name): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
723 |
"""Return Kstat snapshot data via RAD as a dictionary.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
724 |
pattern = { |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
725 |
'class': kstat_class, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
726 |
'module': module, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
727 |
'instance': instance, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
728 |
'name': name |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
729 |
} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
730 |
try: |
5610
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
731 |
self.kstat_control.update() |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
732 |
kstat_object = self.rad_connection.get_object( |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
733 |
kstat.Kstat(), rad.client.ADRGlobPattern(pattern)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
734 |
except Exception as reason: |
1990
c1c6cc703d7a
18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
1944
diff
changeset
|
735 |
LOG.info(_("Unable to retrieve kstat object '%s:%s:%s' of class " |
c1c6cc703d7a
18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
1944
diff
changeset
|
736 |
"'%s' via kstat(3RAD): %s") |
c1c6cc703d7a
18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
1944
diff
changeset
|
737 |
% (module, instance, name, kstat_class, reason)) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
738 |
return None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
739 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
740 |
kstat_data = {} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
741 |
for named in kstat_object.fresh_snapshot().data.NAMED: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
742 |
kstat_data[named.name] = getattr(named.value, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
743 |
str(named.value.discriminant)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
744 |
return kstat_data |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
745 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
746 |
def _get_cpu_time(self, zone): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
747 |
"""Return the CPU time used in nanoseconds.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
748 |
if zone.id == -1: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
749 |
return 0 |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
750 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
751 |
kstat_data = self._get_kstat_by_name('zones', 'cpu', str(zone.id), |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
752 |
'sys_zone_aggr') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
753 |
if kstat_data is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
754 |
return 0 |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
755 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
756 |
return kstat_data['cpu_nsec_kernel'] + kstat_data['cpu_nsec_user'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
757 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
758 |
def get_info(self, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
759 |
"""Get the current status of an instance, by name (not ID!) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
760 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
761 |
:param instance: nova.objects.instance.Instance object |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
762 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
763 |
Returns a InstanceInfo object |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
764 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
765 |
# TODO(Vek): Need to pass context in for access to auth_token |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
766 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
767 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
768 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
769 |
raise exception.InstanceNotFound(instance_id=name) |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
770 |
return hardware.InstanceInfo(state=self._get_state(zone), |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
771 |
max_mem_kb=self._get_max_mem(zone), |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
772 |
mem_kb=self._get_mem(zone), |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
773 |
num_cpu=self._get_num_cpu(zone), |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
774 |
cpu_time_ns=self._get_cpu_time(zone)) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
775 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
776 |
def get_num_instances(self): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
777 |
"""Return the total number of virtual machines. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
778 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
779 |
Return the number of virtual machines that the hypervisor knows |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
780 |
about. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
781 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
782 |
.. note:: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
783 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
784 |
This implementation works for all drivers, but it is |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
785 |
not particularly efficient. Maintainers of the virt drivers are |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
786 |
encouraged to override this method with something more |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
787 |
efficient. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
788 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
789 |
return len(self.list_instances()) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
790 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
791 |
def instance_exists(self, instance): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
792 |
"""Checks existence of an instance on the host. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
793 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
794 |
:param instance: The instance to lookup |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
795 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
796 |
Returns True if an instance with the supplied ID exists on |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
797 |
the host, False otherwise. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
798 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
799 |
.. note:: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
800 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
801 |
This implementation works for all drivers, but it is |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
802 |
not particularly efficient. Maintainers of the virt drivers are |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
803 |
encouraged to override this method with something more |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
804 |
efficient. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
805 |
""" |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
806 |
try: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
807 |
return instance.uuid in self.list_instance_uuids() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
808 |
except NotImplementedError: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
809 |
return instance.name in self.list_instances() |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
810 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
811 |
def estimate_instance_overhead(self, instance_info): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
812 |
"""Estimate the virtualization overhead required to build an instance |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
813 |
of the given flavor. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
814 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
815 |
Defaults to zero, drivers should override if per-instance overhead |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
816 |
calculations are desired. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
817 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
818 |
:param instance_info: Instance/flavor to calculate overhead for. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
819 |
:returns: Dict of estimated overhead values. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
820 |
""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
821 |
return {'memory_mb': 0} |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
822 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
823 |
def _get_list_zone_object(self): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
824 |
"""Return a list of all Solaris Zones objects via RAD.""" |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
825 |
return self.rad_connection.list_objects(zonemgr.Zone()) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
826 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
827 |
def list_instances(self): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
828 |
"""Return the names of all the instances known to the virtualization |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
829 |
layer, as a list. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
830 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
831 |
# TODO(Vek): Need to pass context in for access to auth_token |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
832 |
instances_list = [] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
833 |
for zone in self._get_list_zone_object(): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
834 |
instances_list.append(self.rad_connection.get_object(zone).name) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
835 |
return instances_list |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
836 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
837 |
def list_instance_uuids(self): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
838 |
"""Return the UUIDS of all the instances known to the virtualization |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
839 |
layer, as a list. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
840 |
""" |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
841 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
842 |
|
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
843 |
def _rebuild_block_devices(self, context, instance, bdms, recreate): |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
844 |
root_ci = None |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
845 |
rootmp = instance['root_device_name'] |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
846 |
for entry in bdms: |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
847 |
if entry['connection_info'] is None: |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
848 |
continue |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
849 |
|
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
850 |
if entry['device_name'] == rootmp: |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
851 |
root_ci = jsonutils.loads(entry['connection_info']) |
5948
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
852 |
# Let's make sure this is a well formed connection_info, by |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
853 |
# checking if it has a serial key that represents the |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
854 |
# volume_id. If not check to see if the block device has a |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
855 |
# volume_id, if so then assign this to the root_ci.serial. |
5948
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
856 |
# |
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
857 |
# If we cannot repair the connection_info then simply do not |
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
858 |
# return a root_ci and let the caller decide if they want to |
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
859 |
# fail or not. |
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
860 |
if root_ci.get('serial') is None: |
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
861 |
if entry.get('volume_id') is not None: |
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
862 |
root_ci['serial'] = entry['volume_id'] |
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
863 |
else: |
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
864 |
LOG.debug(_("Unable to determine the volume id for " |
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
865 |
"the connection info for the root device " |
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
866 |
"for instance '%s'") % instance['name']) |
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
867 |
root_ci = None |
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
868 |
|
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
869 |
continue |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
870 |
|
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
871 |
if not recreate: |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
872 |
ci = jsonutils.loads(entry['connection_info']) |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
873 |
self.detach_volume(ci, instance, entry['device_name']) |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
874 |
|
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
875 |
if root_ci is None and recreate: |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
876 |
msg = (_("Unable to find the root device for instance '%s'.") |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
877 |
% instance['name']) |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
878 |
raise exception.NovaException(msg) |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
879 |
|
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
880 |
return root_ci |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
881 |
|
6260
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
882 |
def _set_instance_metahostid(self, instance): |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
883 |
"""Attempt to get the hostid from the current configured zone and |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
884 |
return the hostid. Otherwise return None, and do not set the hostid in |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
885 |
the instance |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
886 |
""" |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
887 |
hostid = instance.system_metadata.get('hostid') |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
888 |
if hostid is not None: |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
889 |
return hostid |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
890 |
|
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
891 |
zone = self._get_zone_by_name(instance['name']) |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
892 |
if zone is None: |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
893 |
return None |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
894 |
|
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
895 |
hostid = lookup_resource_property(zone, 'global', 'hostid') |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
896 |
if hostid: |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
897 |
instance.system_metadata['hostid'] = hostid |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
898 |
|
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
899 |
return hostid |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
900 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
901 |
def rebuild(self, context, instance, image_meta, injected_files, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
902 |
admin_password, bdms, detach_block_devices, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
903 |
attach_block_devices, network_info=None, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
904 |
recreate=False, block_device_info=None, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
905 |
preserve_ephemeral=False): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
906 |
"""Destroy and re-make this instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
907 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
908 |
A 'rebuild' effectively purges all existing data from the system and |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
909 |
remakes the VM with given 'metadata' and 'personalities'. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
910 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
911 |
This base class method shuts down the VM, detaches all block devices, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
912 |
then spins up the new VM afterwards. It may be overridden by |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
913 |
hypervisors that need to - e.g. for optimisations, or when the 'VM' |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
914 |
is actually proxied and needs to be held across the shutdown + spin |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
915 |
up steps. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
916 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
917 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
918 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
919 |
This function should use the data there to guide |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
920 |
the creation of the new instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
921 |
:param image_meta: image object returned by nova.image.glance that |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
922 |
defines the image from which to boot this instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
923 |
:param injected_files: User files to inject into instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
924 |
:param admin_password: Administrator password to set in instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
925 |
:param bdms: block-device-mappings to use for rebuild |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
926 |
:param detach_block_devices: function to detach block devices. See |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
927 |
nova.compute.manager.ComputeManager:_rebuild_default_impl for |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
928 |
usage. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
929 |
:param attach_block_devices: function to attach block devices. See |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
930 |
nova.compute.manager.ComputeManager:_rebuild_default_impl for |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
931 |
usage. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
932 |
:param network_info: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
933 |
:py:meth:`~nova.network.manager.NetworkManager.get_instance_nw_info` |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
934 |
:param recreate: True if the instance is being recreated on a new |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
935 |
hypervisor - all the cleanup of old state is skipped. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
936 |
:param block_device_info: Information about block devices to be |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
937 |
attached to the instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
938 |
:param preserve_ephemeral: True if the default ephemeral storage |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
939 |
partition must be preserved on rebuild |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
940 |
""" |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
941 |
if recreate: |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
942 |
instance.system_metadata['evac_from'] = instance['launched_on'] |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
943 |
instance.save() |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
944 |
extra_specs = self._get_extra_specs(instance) |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
945 |
brand = extra_specs.get('zonecfg:brand', ZONE_BRAND_SOLARIS) |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
946 |
if brand == ZONE_BRAND_SOLARIS: |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
947 |
msg = (_("'%s' branded zones do not currently support " |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
948 |
"evacuation.") % brand) |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
949 |
raise exception.NovaException(msg) |
6260
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
950 |
else: |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
951 |
self._power_off(instance, "HALT") |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
952 |
|
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
953 |
instance.task_state = task_states.REBUILD_BLOCK_DEVICE_MAPPING |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
954 |
instance.save(expected_task_state=[task_states.REBUILDING]) |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
955 |
root_ci = self._rebuild_block_devices(context, instance, bdms, |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
956 |
recreate) |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
957 |
|
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
958 |
if root_ci is not None: |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
959 |
driver_type = root_ci['driver_volume_type'] |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
960 |
else: |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
961 |
driver_type = 'local' |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
962 |
|
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
963 |
# If image_meta is provided then the --on-shared-storage option |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
964 |
# was not used. |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
965 |
if image_meta: |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
966 |
# If not then raise an exception. But if this is a rebuild then |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
967 |
# the local storage is ok. |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
968 |
if driver_type in shared_storage and recreate: |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
969 |
msg = (_("Root device is on shared storage for instance '%s'.") |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
970 |
% instance['name']) |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
971 |
raise exception.NovaException(msg) |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
972 |
|
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
973 |
else: |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
974 |
# So the root device is not expected to be local so we can move |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
975 |
# forward with building the zone. |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
976 |
if driver_type not in shared_storage: |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
977 |
msg = (_("Root device is not on shared storage for instance " |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
978 |
"'%s'.") % instance['name']) |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
979 |
|
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
980 |
raise exception.NovaException(msg) |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
981 |
|
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
982 |
if not recreate: |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
983 |
self.destroy(context, instance, network_info, block_device_info) |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
984 |
if root_ci is not None: |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
985 |
self._volume_api.detach(context, root_ci['serial']) |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
986 |
self._volume_api.delete(context, root_ci['serial']) |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
987 |
|
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
988 |
instance.task_state = task_states.REBUILD_SPAWNING |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
989 |
instance.save( |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
990 |
expected_task_state=[task_states.REBUILD_BLOCK_DEVICE_MAPPING]) |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
991 |
|
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
992 |
if recreate: |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
993 |
extra_specs = self._get_extra_specs(instance) |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
994 |
|
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
995 |
instance.system_metadata['rebuilding'] = False |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
996 |
self._create_config(context, instance, network_info, |
5436
2c7413fb2a81
22691630 attempting to resize or evacuate with a network is broken
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5405
diff
changeset
|
997 |
root_ci, None) |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
998 |
del instance.system_metadata['evac_from'] |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
999 |
instance.save() |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1000 |
else: |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1001 |
instance.system_metadata['rebuilding'] = True |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1002 |
self.spawn(context, instance, image_meta, injected_files, |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1003 |
admin_password, network_info, block_device_info) |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1004 |
self.power_off(instance) |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1005 |
|
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1006 |
del instance.system_metadata['rebuilding'] |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1007 |
name = instance['name'] |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1008 |
zone = self._get_zone_by_name(name) |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1009 |
if zone is None: |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1010 |
raise exception.InstanceNotFound(instance_id=name) |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1011 |
|
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1012 |
if recreate: |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1013 |
zone.attach(['-x', 'initialize-hostdata']) |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1014 |
|
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1015 |
rootmp = instance['root_device_name'] |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1016 |
for entry in bdms: |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1017 |
if (entry['connection_info'] is None or |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1018 |
rootmp == entry['device_name']): |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1019 |
continue |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1020 |
|
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1021 |
connection_info = jsonutils.loads(entry['connection_info']) |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1022 |
mount = entry['device_name'] |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1023 |
self.attach_volume(context, connection_info, instance, mount) |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1024 |
|
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1025 |
self._power_on(instance, network_info) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1026 |
|
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1027 |
if admin_password is not None: |
5312
b5fa281dd501
21660635 root-password functionality required for defcore coverage
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5311
diff
changeset
|
1028 |
# Because there is no way to make sure a zone is ready upon |
b5fa281dd501
21660635 root-password functionality required for defcore coverage
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5311
diff
changeset
|
1029 |
# returning from a boot request. We must give the zone a few |
b5fa281dd501
21660635 root-password functionality required for defcore coverage
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5311
diff
changeset
|
1030 |
# seconds to boot before attempting to set the admin password. |
b5fa281dd501
21660635 root-password functionality required for defcore coverage
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5311
diff
changeset
|
1031 |
greenthread.sleep(15) |
b5fa281dd501
21660635 root-password functionality required for defcore coverage
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5311
diff
changeset
|
1032 |
self.set_admin_password(instance, admin_password) |
b5fa281dd501
21660635 root-password functionality required for defcore coverage
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5311
diff
changeset
|
1033 |
|
5191
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
1034 |
def _get_extra_specs(self, instance): |
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
1035 |
"""Retrieve extra_specs of an instance.""" |
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
1036 |
flavor = flavor_obj.Flavor.get_by_id( |
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
1037 |
nova_context.get_admin_context(read_deleted='yes'), |
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
1038 |
instance['instance_type_id']) |
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
1039 |
return flavor['extra_specs'].copy() |
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
1040 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1041 |
def _fetch_image(self, context, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1042 |
"""Fetch an image using Glance given the instance's image_ref.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1043 |
glancecache_dirname = CONF.glancecache_dirname |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1044 |
fileutils.ensure_tree(glancecache_dirname) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1045 |
image = ''.join([glancecache_dirname, '/', instance['image_ref']]) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1046 |
if os.path.exists(image): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1047 |
LOG.debug(_("Using existing, cached Glance image: id %s") |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1048 |
% instance['image_ref']) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1049 |
return image |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1050 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1051 |
LOG.debug(_("Fetching new Glance image: id %s") |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1052 |
% instance['image_ref']) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1053 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1054 |
images.fetch(context, instance['image_ref'], image, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1055 |
instance['user_id'], instance['project_id']) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1056 |
except Exception as reason: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1057 |
LOG.error(_("Unable to fetch Glance image: id %s: %s") |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1058 |
% (instance['image_ref'], reason)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1059 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1060 |
return image |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1061 |
|
5607
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
1062 |
def _validate_image(self, context, image, instance): |
5279
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1063 |
"""Validate a glance image for compatibility with the instance.""" |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1064 |
# Skip if the image was already checked and confirmed as valid. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1065 |
if instance['image_ref'] in self._validated_archives: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1066 |
return |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1067 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1068 |
try: |
5610
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
1069 |
ua = self.archive_manager.getArchive(image) |
5279
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1070 |
except Exception as ex: |
5541
e93ae190039c
22854239 Nova not expecting anything but a RAD error in call to getArchive()
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5436
diff
changeset
|
1071 |
if isinstance(ex, rad.client.ObjectError): |
e93ae190039c
22854239 Nova not expecting anything but a RAD error in call to getArchive()
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5436
diff
changeset
|
1072 |
reason = ex.get_payload().info |
e93ae190039c
22854239 Nova not expecting anything but a RAD error in call to getArchive()
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5436
diff
changeset
|
1073 |
else: |
e93ae190039c
22854239 Nova not expecting anything but a RAD error in call to getArchive()
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5436
diff
changeset
|
1074 |
reason = str(ex) |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
1075 |
raise exception.ImageUnacceptable( |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
1076 |
image_id=instance['image_ref'], |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
1077 |
reason=reason) |
5279
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1078 |
|
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1079 |
# Validate the image at this point to ensure: |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1080 |
# - contains one deployable system |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1081 |
deployables = ua.getArchivedSystems() |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1082 |
if len(deployables) != 1: |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1083 |
reason = _("Image must contain only a single deployable system.") |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1084 |
raise exception.ImageUnacceptable(image_id=instance['image_ref'], |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1085 |
reason=reason) |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1086 |
# - matching architecture |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1087 |
deployable_arch = str(ua.isa) |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1088 |
compute_arch = platform.processor() |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1089 |
if deployable_arch.lower() != compute_arch: |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1090 |
reason = (_("Unified Archive architecture '%s' is incompatible " |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1091 |
"with this compute host's architecture, '%s'.") |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1092 |
% (deployable_arch, compute_arch)) |
5607
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
1093 |
|
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
1094 |
# For some reason we have gotten the wrong architecture image, |
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
1095 |
# which should have been filtered by the scheduler. One reason this |
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
1096 |
# could happen is because the images architecture type is |
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
1097 |
# incorrectly set. Check for this and report a better reason. |
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
1098 |
glanceapi = glance_api() |
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
1099 |
image_meta = glanceapi.get(context, instance['image_ref']) |
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
1100 |
image_properties = image_meta.get('properties') |
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
1101 |
if image_properties.get('architecture') is None: |
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
1102 |
reason = reason + (_(" The 'architecture' property is not set " |
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
1103 |
"on the Glance image.")) |
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
1104 |
|
5279
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1105 |
raise exception.ImageUnacceptable(image_id=instance['image_ref'], |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1106 |
reason=reason) |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1107 |
# - single root pool only |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1108 |
if not deployables[0].rootOnly: |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1109 |
reason = _("Image contains more than one ZFS pool.") |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1110 |
raise exception.ImageUnacceptable(image_id=instance['image_ref'], |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1111 |
reason=reason) |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1112 |
# - looks like it's OK |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1113 |
self._validated_archives.append(instance['image_ref']) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1114 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1115 |
def _suri_from_volume_info(self, connection_info): |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
1116 |
"""Returns a suri(5) formatted string based on connection_info. |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
1117 |
Currently supports local ZFS volume, NFS, Fibre Channel and iSCSI |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
1118 |
driver types. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1119 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1120 |
driver_type = connection_info['driver_volume_type'] |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
1121 |
if driver_type not in ['iscsi', 'fibre_channel', 'local', 'nfs']: |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1122 |
raise exception.VolumeDriverNotFound(driver_type=driver_type) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1123 |
if driver_type == 'local': |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1124 |
suri = 'dev:/dev/zvol/dsk/%s' % connection_info['volume_path'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1125 |
elif driver_type == 'iscsi': |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1126 |
data = connection_info['data'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1127 |
# suri(5) format: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1128 |
# iscsi://<host>[:<port>]/target.<IQN>,lun.<LUN> |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1129 |
# Sample iSCSI connection data values: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1130 |
# target_portal: 192.168.1.244:3260 |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1131 |
# target_iqn: iqn.2010-10.org.openstack:volume-a89c..... |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1132 |
# target_lun: 1 |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1133 |
suri = 'iscsi://%s/target.%s,lun.%d' % (data['target_portal'], |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1134 |
data['target_iqn'], |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1135 |
data['target_lun']) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1136 |
# TODO(npower): need to handle CHAP authentication also |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
1137 |
elif driver_type == 'nfs': |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
1138 |
data = connection_info['data'] |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
1139 |
suri = ( |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
1140 |
'nfs://cinder:cinder@%s/%s' % |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
1141 |
(data['export'].replace(':', ''), data['name']) |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
1142 |
) |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
1143 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1144 |
elif driver_type == 'fibre_channel': |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1145 |
data = connection_info['data'] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1146 |
target_wwn = data['target_wwn'] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1147 |
# Ensure there's a fibre channel HBA. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1148 |
hbas = self._get_fc_hbas() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1149 |
if not hbas: |
6070
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1150 |
LOG.error(_("Cannot attach Fibre Channel volume because " |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1151 |
"no Fibre Channel HBA initiators were found")) |
1990
c1c6cc703d7a
18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
1944
diff
changeset
|
1152 |
raise exception.InvalidVolume( |
c1c6cc703d7a
18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
1944
diff
changeset
|
1153 |
reason="No host Fibre Channel initiator found") |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1154 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1155 |
target_lun = data['target_lun'] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1156 |
# If the volume was exported just a few seconds previously then |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1157 |
# it will probably not be visible to the local adapter yet. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1158 |
# Invoke 'fcinfo remote-port' on all local HBA ports to trigger |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1159 |
# a refresh. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1160 |
for wwpn in self._get_fc_wwpns(): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1161 |
utils.execute('/usr/sbin/fcinfo', 'remote-port', |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1162 |
'-p', wwpn) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1163 |
|
6070
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1164 |
suri = self._lookup_fc_volume_suri(target_wwn, target_lun) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1165 |
return suri |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1166 |
|
6070
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1167 |
def _lookup_fc_volume_suri(self, target_wwn, target_lun): |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1168 |
"""Searching the LU based URI for the FC LU. """ |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1169 |
wwns = [] |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1170 |
if isinstance(target_wwn, list): |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1171 |
wwns = target_wwn |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1172 |
else: |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1173 |
wwns.append(target_wwn) |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1174 |
|
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1175 |
for _none in range(3): |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1176 |
for wwn in wwns: |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1177 |
try: |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1178 |
out, err = utils.execute('/usr/sbin/suriadm', 'lookup-uri', |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1179 |
'-p', 'target=naa.%s' % wwn, |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1180 |
'-p', 'lun=%s' % target_lun) |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1181 |
for line in [l.strip() for l in out.splitlines()]: |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1182 |
if line.startswith("lu:luname.naa."): |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1183 |
return line |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1184 |
except processutils.ProcessExecutionError as ex: |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1185 |
reason = ex.stderr |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1186 |
LOG.debug(_("Failed to lookup-uri for volume '%s', lun " |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1187 |
"%s: %s") % (wwn, target_lun, reason)) |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1188 |
greenthread.sleep(2) |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1189 |
else: |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1190 |
msg = _("Unable to lookup URI of Fibre Channel volume " |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1191 |
"with lun '%s'." % target_lun) |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1192 |
raise exception.InvalidVolume(reason=msg) |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1193 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1194 |
def _set_global_properties(self, name, extra_specs, brand): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1195 |
"""Set Solaris Zone's global properties if supplied via flavor.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1196 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1197 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1198 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1199 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1200 |
# TODO(dcomay): Should figure this out via the brands themselves. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1201 |
zonecfg_items = [ |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1202 |
'bootargs', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1203 |
'brand', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1204 |
'hostid' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1205 |
] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1206 |
if brand == ZONE_BRAND_SOLARIS: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1207 |
zonecfg_items.extend( |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1208 |
['file-mac-profile', 'fs-allowed', 'limitpriv']) |
6178
a11e4cbcf3d2
23523730 zonecfg:cpu-arch missing from supported zone properties in extra_specs
david.comay@oracle.com
parents:
6123
diff
changeset
|
1209 |
else: |
a11e4cbcf3d2
23523730 zonecfg:cpu-arch missing from supported zone properties in extra_specs
david.comay@oracle.com
parents:
6123
diff
changeset
|
1210 |
zonecfg_items.extend(['cpu-arch']) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1211 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1212 |
with ZoneConfig(zone) as zc: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1213 |
for key, value in extra_specs.iteritems(): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1214 |
# Ignore not-zonecfg-scoped brand properties. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1215 |
if not key.startswith('zonecfg:'): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1216 |
continue |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1217 |
_scope, prop = key.split(':', 1) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1218 |
# Ignore the 'brand' property if present. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1219 |
if prop == 'brand': |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1220 |
continue |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1221 |
# Ignore but warn about unsupported zonecfg-scoped properties. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1222 |
if prop not in zonecfg_items: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1223 |
LOG.warning(_("Ignoring unsupported zone property '%s' " |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1224 |
"set on flavor for instance '%s'") |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1225 |
% (prop, name)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1226 |
continue |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1227 |
zc.setprop('global', prop, value) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1228 |
|
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1229 |
def _create_boot_volume(self, context, instance): |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1230 |
"""Create a (Cinder) volume service backed boot volume""" |
6014
83c60536394d
PSARC/2016/242 Nova boot volume placement
Niall Power <niall.power@oracle.com>
parents:
5949
diff
changeset
|
1231 |
boot_vol_az = CONF.boot_volume_az |
83c60536394d
PSARC/2016/242 Nova boot volume placement
Niall Power <niall.power@oracle.com>
parents:
5949
diff
changeset
|
1232 |
boot_vol_type = CONF.boot_volume_type |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1233 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1234 |
vol = self._volume_api.create( |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1235 |
context, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1236 |
instance['root_gb'], |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1237 |
instance['hostname'] + "-" + self._rootzpool_suffix, |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1238 |
"Boot volume for instance '%s' (%s)" |
6014
83c60536394d
PSARC/2016/242 Nova boot volume placement
Niall Power <niall.power@oracle.com>
parents:
5949
diff
changeset
|
1239 |
% (instance['name'], instance['uuid']), |
83c60536394d
PSARC/2016/242 Nova boot volume placement
Niall Power <niall.power@oracle.com>
parents:
5949
diff
changeset
|
1240 |
volume_type=boot_vol_type, |
83c60536394d
PSARC/2016/242 Nova boot volume placement
Niall Power <niall.power@oracle.com>
parents:
5949
diff
changeset
|
1241 |
availability_zone=boot_vol_az) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1242 |
# TODO(npower): Polling is what nova/compute/manager also does when |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1243 |
# creating a new volume, so we do likewise here. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1244 |
while True: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1245 |
volume = self._volume_api.get(context, vol['id']) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1246 |
if volume['status'] != 'creating': |
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1247 |
return volume |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1248 |
greenthread.sleep(1) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1249 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1250 |
except Exception as reason: |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1251 |
LOG.error(_("Unable to create root zpool volume for instance '%s'" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1252 |
": %s") % (instance['name'], reason)) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1253 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1254 |
|
5191
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
1255 |
def _connect_boot_volume(self, volume, mountpoint, context, instance): |
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1256 |
"""Connect a (Cinder) volume service backed boot volume""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1257 |
instance_uuid = instance['uuid'] |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1258 |
volume_id = volume['id'] |
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1259 |
|
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1260 |
connector = self.get_volume_connector(instance) |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1261 |
connection_info = self._volume_api.initialize_connection( |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1262 |
context, volume_id, connector) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1263 |
connection_info['serial'] = volume_id |
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1264 |
|
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1265 |
# Check connection_info to determine if the provided volume is |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1266 |
# local to this compute node. If it is, then don't use it for |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1267 |
# Solaris branded zones in order to avoid a known ZFS deadlock issue |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1268 |
# when using a zpool within another zpool on the same system. |
5191
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
1269 |
extra_specs = self._get_extra_specs(instance) |
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
1270 |
brand = extra_specs.get('zonecfg:brand', ZONE_BRAND_SOLARIS) |
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1271 |
if brand == ZONE_BRAND_SOLARIS: |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1272 |
driver_type = connection_info['driver_volume_type'] |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1273 |
if driver_type == 'local': |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1274 |
msg = _("Detected 'local' zvol driver volume type " |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1275 |
"from volume service, which should not be " |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1276 |
"used as a boot device for 'solaris' " |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1277 |
"branded zones.") |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1278 |
raise exception.InvalidVolume(reason=msg) |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1279 |
elif driver_type == 'iscsi': |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1280 |
# Check for a potential loopback iSCSI situation |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1281 |
data = connection_info['data'] |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1282 |
target_portal = data['target_portal'] |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1283 |
# Strip off the port number (eg. 127.0.0.1:3260) |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1284 |
host = target_portal.rsplit(':', 1) |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1285 |
# Strip any enclosing '[' and ']' brackets for |
5190
fc9c815fce00
20410887 Solaris Nova driver should be resilient when network info is None
david.comay@oracle.com
parents:
4982
diff
changeset
|
1286 |
# IPv6 addresses. |
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1287 |
target_host = host[0].strip('[]') |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1288 |
|
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1289 |
# Check if target_host is an IP or hostname matching the |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1290 |
# connector host or IP, which would mean the provisioned |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1291 |
# iSCSI LUN is on the same host as the instance. |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1292 |
if target_host in [connector['ip'], connector['host']]: |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1293 |
msg = _("iSCSI connection info from volume " |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1294 |
"service indicates that the target is a " |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1295 |
"local volume, which should not be used " |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1296 |
"as a boot device for 'solaris' branded " |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1297 |
"zones.") |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1298 |
raise exception.InvalidVolume(reason=msg) |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1299 |
# Assuming that fibre_channel is non-local |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1300 |
elif driver_type != 'fibre_channel': |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1301 |
# Some other connection type that we don't understand |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1302 |
# Let zone use some local fallback instead. |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1303 |
msg = _("Unsupported volume driver type '%s' can not be used " |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1304 |
"as a boot device for zones." % driver_type) |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1305 |
raise exception.InvalidVolume(reason=msg) |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1306 |
|
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1307 |
# Volume looks OK to use. Notify Cinder of the attachment. |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1308 |
self._volume_api.attach(context, volume_id, instance_uuid, |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1309 |
mountpoint) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1310 |
return connection_info |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1311 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1312 |
def _set_boot_device(self, name, connection_info, brand): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1313 |
"""Set the boot device specified by connection_info""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1314 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1315 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1316 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1317 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1318 |
suri = self._suri_from_volume_info(connection_info) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1319 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1320 |
with ZoneConfig(zone) as zc: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1321 |
# ZOSS device configuration is different for the solaris-kz brand |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1322 |
if brand == ZONE_BRAND_SOLARIS_KZ: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1323 |
zc.zone.setResourceProperties( |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1324 |
zonemgr.Resource( |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1325 |
"device", |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1326 |
[zonemgr.Property("bootpri", "0")]), |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1327 |
[zonemgr.Property("storage", suri)]) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1328 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1329 |
zc.addresource( |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1330 |
ROOTZPOOL_RESOURCE, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1331 |
[zonemgr.Property("storage", listvalue=[suri])], |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1332 |
ignore_exists=True) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1333 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1334 |
def _set_num_cpu(self, name, vcpus, brand): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1335 |
"""Set number of VCPUs in a Solaris Zone configuration.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1336 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1337 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1338 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1339 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1340 |
# The Solaris Zone brand type is used to specify the type of |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1341 |
# 'cpu' resource set in the Solaris Zone configuration. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1342 |
if brand == ZONE_BRAND_SOLARIS: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1343 |
vcpu_resource = 'capped-cpu' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1344 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1345 |
vcpu_resource = 'virtual-cpu' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1346 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1347 |
# TODO(dcomay): Until 17881862 is resolved, this should be turned into |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1348 |
# an appropriate 'rctl' resource for the 'capped-cpu' case. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1349 |
with ZoneConfig(zone) as zc: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1350 |
zc.setprop(vcpu_resource, 'ncpus', str(vcpus)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1351 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1352 |
def _set_memory_cap(self, name, memory_mb, brand): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1353 |
"""Set memory cap in a Solaris Zone configuration.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1354 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1355 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1356 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1357 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1358 |
# The Solaris Zone brand type is used to specify the type of |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1359 |
# 'memory' cap set in the Solaris Zone configuration. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1360 |
if brand == ZONE_BRAND_SOLARIS: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1361 |
mem_resource = 'swap' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1362 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1363 |
mem_resource = 'physical' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1364 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1365 |
with ZoneConfig(zone) as zc: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1366 |
zc.setprop('capped-memory', mem_resource, '%dM' % memory_mb) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1367 |
|
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1368 |
def _plug_vifs(self, instance, network_info): |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1369 |
# if the VIF is of EVS type (i.e., vif['type'] is ''), |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1370 |
# then nothing to do |
6123
806b9ac912fa
23480374 network_info is incorrectly checked against None when it can be [] as well
chaithan.prakash@oracle.com <chaithan.prakash@oracle.com>
parents:
6070
diff
changeset
|
1371 |
if not network_info or not network_info[0]['type']: |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1372 |
LOG.debug(_("VIF is an EVS type. Nothing to plug.")) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1373 |
return |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1374 |
|
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1375 |
# first find out all the anets for a given instance |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1376 |
try: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1377 |
out, err = utils.execute('/usr/sbin/dladm', 'show-vnic', |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1378 |
'-z', instance['name'], |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1379 |
'-po', 'link,macaddress') |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1380 |
except Exception as reason: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1381 |
msg = (_("Unable to get ANETs for instance '%s': %s") |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1382 |
% (instance['name'], reason)) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1383 |
raise exception.NovaException(msg) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1384 |
|
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1385 |
anetdict = {} |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1386 |
for anet_maddr in out.strip().splitlines(): |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1387 |
anet, maddr = anet_maddr.strip().split(':', 1) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1388 |
maddr = maddr.replace('\\', '') |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1389 |
maddr = ''.join(['%02x' % int(b, 16) for b in maddr.split(':')]) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1390 |
anetdict[maddr] = anet |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1391 |
|
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1392 |
LOG.debug(_("List of instance %s's anets: %s") % (instance['name'], |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1393 |
anetdict)) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1394 |
# we now have a list of VNICs that belong to the VM |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1395 |
# we need to map the VNIC to the bridge |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1396 |
bridge = CONF.neutron.ovs_bridge |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1397 |
for vif in network_info: |
6123
806b9ac912fa
23480374 network_info is incorrectly checked against None when it can be [] as well
chaithan.prakash@oracle.com <chaithan.prakash@oracle.com>
parents:
6070
diff
changeset
|
1398 |
if vif['type'] == 'binding_failed': |
806b9ac912fa
23480374 network_info is incorrectly checked against None when it can be [] as well
chaithan.prakash@oracle.com <chaithan.prakash@oracle.com>
parents:
6070
diff
changeset
|
1399 |
LOG.error(_('Port binding has failed for VIF %s. Ensure that ' |
806b9ac912fa
23480374 network_info is incorrectly checked against None when it can be [] as well
chaithan.prakash@oracle.com <chaithan.prakash@oracle.com>
parents:
6070
diff
changeset
|
1400 |
'OVS agent is running and/or bridge_mappings are ' |
806b9ac912fa
23480374 network_info is incorrectly checked against None when it can be [] as well
chaithan.prakash@oracle.com <chaithan.prakash@oracle.com>
parents:
6070
diff
changeset
|
1401 |
'correctly configured. VM will not have network ' |
806b9ac912fa
23480374 network_info is incorrectly checked against None when it can be [] as well
chaithan.prakash@oracle.com <chaithan.prakash@oracle.com>
parents:
6070
diff
changeset
|
1402 |
'connectivity') % vif) |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1403 |
vif_maddr = ''.join(['%02x' % int(b, 16) for b in |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1404 |
vif['address'].split(':')]) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1405 |
anet = anetdict.get(vif_maddr) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1406 |
if anet is None: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1407 |
LOG.error(_('Failed to add port %s connected to network %s ' |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1408 |
'to instance %s') % (vif['ovs_interfaceid'], |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1409 |
vif['network']['id'], |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1410 |
instance['name'])) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1411 |
continue |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1412 |
cmd = ['/usr/sbin/ovs-vsctl', |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1413 |
'--timeout=%s' % CONF.ovs_vsctl_timeout, |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1414 |
'--', '--if-exists', 'del-port', bridge, anet, |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1415 |
'--', 'add-port', bridge, anet, |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1416 |
'--', 'set', 'Interface', anet, |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1417 |
'external-ids:iface-id=%s' % vif['id'], |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1418 |
'external-ids:iface-status=active', |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1419 |
'external-ids:attached-mac=%s' % vif['address'], |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1420 |
'external-ids:vm-uuid=%s' % instance['uuid'] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1421 |
] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1422 |
try: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1423 |
out, err = utils.execute(*cmd) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1424 |
except Exception as reason: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1425 |
msg = (_("Failed to add VNIC '%s' with MAC address %s to " |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1426 |
"OVS Bridge '%s': %s") % (anet, vif['address'], |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1427 |
bridge, reason)) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1428 |
raise exception.NovaException(msg) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1429 |
LOG.debug(_('Successfully added anet %s with MAC adddress %s') % |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1430 |
(anet, vif['address'])) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1431 |
|
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1432 |
def _unplug_vifs(self, instance): |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1433 |
# Since we don't have VIF info here, we need to find if the anets |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1434 |
# were EVS based or OVS based by looking at the CONF setting. In |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1435 |
# EVS based cloud neutron.ovs_bridge setting will be set to the |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1436 |
# default value of 'br-int'. |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1437 |
ovs_bridge = CONF.neutron.ovs_bridge |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1438 |
if ovs_bridge == 'br-int': |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1439 |
LOG.debug(_("Instance %s doesn't have any OVS based anets") % |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1440 |
instance['name']) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1441 |
return |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1442 |
# remove the anets from the OVS bridge |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1443 |
cmd = ['/usr/sbin/ovs-vsctl', '--timeout=%s' % CONF.ovs_vsctl_timeout, |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1444 |
'list-ports', ovs_bridge] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1445 |
try: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1446 |
out, err = utils.execute(*cmd) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1447 |
except Exception as reason: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1448 |
msg = (_("Unable to get ANETs for instance '%s': %s") |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1449 |
% (instance['name'], reason)) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1450 |
raise exception.NovaException(msg) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1451 |
|
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1452 |
for port in out.strip().splitlines(): |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1453 |
if port.split('/')[0] != instance['name']: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1454 |
continue |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1455 |
cmd = ['/usr/sbin/ovs-vsctl', |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1456 |
'--timeout=%s' % CONF.ovs_vsctl_timeout, |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1457 |
'--', '--if-exists', 'del-port', ovs_bridge, port] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1458 |
try: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1459 |
out, err = utils.execute(*cmd) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1460 |
LOG.debug(_('Removed port %s from the OVS bridge %s') % |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1461 |
(port, ovs_bridge)) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1462 |
except Exception as reason: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1463 |
LOG.warning(_("Unable to remove port %s from the OVS " |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1464 |
"bridge %s: %s") % (port, ovs_bridge, reason)) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1465 |
|
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1466 |
def _set_evs_info(self, zone, brand, vifid, vif): |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1467 |
vport_uuid = vif['id'] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1468 |
evs_uuid = vif['network']['id'] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1469 |
with ZoneConfig(zone) as zc: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1470 |
if vifid == 0: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1471 |
tenant_id = vif['network']['meta']['tenant_id'] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1472 |
zc.setprop('global', 'tenant', tenant_id) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1473 |
zc.setprop('anet', 'configure-allowed-address', 'false') |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1474 |
zc.setprop('anet', 'evs', evs_uuid) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1475 |
zc.setprop('anet', 'vport', vport_uuid) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1476 |
else: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1477 |
zc.addresource( |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1478 |
'anet', |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1479 |
[zonemgr.Property('configure-allowed-address', |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1480 |
'false'), |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1481 |
zonemgr.Property('evs', evs_uuid), |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1482 |
zonemgr.Property('vport', vport_uuid)]) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1483 |
|
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1484 |
prop_filter = [zonemgr.Property('vport', vport_uuid)] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1485 |
if brand == ZONE_BRAND_SOLARIS: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1486 |
anetname = lookup_resource_property(zc.zone, 'anet', |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1487 |
'linkname', prop_filter) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1488 |
else: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1489 |
anetid = lookup_resource_property(zc.zone, 'anet', 'id', |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1490 |
prop_filter) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1491 |
anetname = 'net%s' % anetid |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1492 |
return anetname |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1493 |
|
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1494 |
def _set_ovs_info(self, context, zone, brand, vifid, vif): |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1495 |
# Need to be admin to retrieve provider:network_type attribute |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1496 |
network_plugin = neutronv2_api.get_client(context, admin=True) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1497 |
network = network_plugin.show_network( |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1498 |
vif['network']['id'])['network'] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1499 |
network_type = network['provider:network_type'] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1500 |
lower_link = None |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1501 |
if network_type == 'vxlan': |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1502 |
lower_link = 'ovs.vxlan1' |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1503 |
elif network_type in ['vlan', 'flat']: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1504 |
physical_network = network['provider:physical_network'] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1505 |
# retrieve the other_config information from Open_vSwitch table |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1506 |
try: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1507 |
results = get_ovsdb_info('Open_vSwitch', ['other_config']) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1508 |
except Exception as err: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1509 |
LOG.error(_("Failed to retrieve other_config: %s"), err) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1510 |
raise |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1511 |
|
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1512 |
other_config = results[0]['other_config'] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1513 |
if not other_config: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1514 |
msg = (_("'other_config' column in 'Open_vSwitch' OVSDB table " |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1515 |
"is not configured. Please configure it so that " |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1516 |
"lower-link can be determined for the instance's " |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1517 |
"anet")) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1518 |
LOG.error(msg) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1519 |
raise exception.NovaException(msg) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1520 |
bridge_mappings = other_config.get('bridge_mappings') |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1521 |
if not bridge_mappings: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1522 |
msg = (_("'bridge_mappings' info is not set in 'other_config' " |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1523 |
"column of 'Open_vSwitch' OVSDB table. Please " |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1524 |
"configure it so that lower-link can be determined " |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1525 |
"for the instance's anet")) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1526 |
LOG.error(msg) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1527 |
raise exception.NovaException(msg) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1528 |
for bridge_mapping in bridge_mappings.split(','): |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1529 |
if physical_network in bridge_mapping: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1530 |
lower_link = bridge_mapping.split(':')[1] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1531 |
break |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1532 |
if not lower_link: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1533 |
msg = (_("Failed to determine the lower_link for vif '%s'") % |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1534 |
(vif)) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1535 |
LOG.error(msg) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1536 |
raise exception.NovaException(msg) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1537 |
else: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1538 |
# TYPE_GRE and TYPE_LOCAL |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1539 |
msg = (_("Unsupported network type: %s") % network_type) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1540 |
LOG.error(msg) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1541 |
raise exception.NovaException(msg) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1542 |
|
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1543 |
with ZoneConfig(zone) as zc: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1544 |
if vifid == 0: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1545 |
zc.setprop('anet', 'lower-link', lower_link) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1546 |
zc.setprop('anet', 'configure-allowed-address', 'false') |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1547 |
zc.setprop('anet', 'mac-address', vif['address']) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1548 |
else: |
6178
a11e4cbcf3d2
23523730 zonecfg:cpu-arch missing from supported zone properties in extra_specs
david.comay@oracle.com
parents:
6123
diff
changeset
|
1549 |
zc.addresource( |
a11e4cbcf3d2
23523730 zonecfg:cpu-arch missing from supported zone properties in extra_specs
david.comay@oracle.com
parents:
6123
diff
changeset
|
1550 |
'anet', |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1551 |
[zonemgr.Property('lower-link', lower_link), |
6178
a11e4cbcf3d2
23523730 zonecfg:cpu-arch missing from supported zone properties in extra_specs
david.comay@oracle.com
parents:
6123
diff
changeset
|
1552 |
zonemgr.Property('configure-allowed-address', 'false'), |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1553 |
zonemgr.Property('mac-address', vif['address'])]) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1554 |
|
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1555 |
prop_filter = [zonemgr.Property('mac-address', vif['address'])] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1556 |
if brand == ZONE_BRAND_SOLARIS: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1557 |
anetname = lookup_resource_property(zc.zone, 'anet', |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1558 |
'linkname', prop_filter) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1559 |
else: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1560 |
anetid = lookup_resource_property(zc.zone, 'anet', 'id', |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1561 |
prop_filter) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1562 |
anetname = 'net%s' % anetid |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1563 |
return anetname |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1564 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1565 |
def _set_network(self, context, name, instance, network_info, brand, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1566 |
sc_dir): |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1567 |
"""add networking information to the zone.""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1568 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1569 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1570 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1571 |
|
5190
fc9c815fce00
20410887 Solaris Nova driver should be resilient when network info is None
david.comay@oracle.com
parents:
4982
diff
changeset
|
1572 |
if not network_info: |
fc9c815fce00
20410887 Solaris Nova driver should be resilient when network info is None
david.comay@oracle.com
parents:
4982
diff
changeset
|
1573 |
with ZoneConfig(zone) as zc: |
fc9c815fce00
20410887 Solaris Nova driver should be resilient when network info is None
david.comay@oracle.com
parents:
4982
diff
changeset
|
1574 |
if brand == ZONE_BRAND_SOLARIS: |
fc9c815fce00
20410887 Solaris Nova driver should be resilient when network info is None
david.comay@oracle.com
parents:
4982
diff
changeset
|
1575 |
zc.removeresources("anet", |
fc9c815fce00
20410887 Solaris Nova driver should be resilient when network info is None
david.comay@oracle.com
parents:
4982
diff
changeset
|
1576 |
[zonemgr.Property("linkname", "net0")]) |
fc9c815fce00
20410887 Solaris Nova driver should be resilient when network info is None
david.comay@oracle.com
parents:
4982
diff
changeset
|
1577 |
else: |
fc9c815fce00
20410887 Solaris Nova driver should be resilient when network info is None
david.comay@oracle.com
parents:
4982
diff
changeset
|
1578 |
zc.removeresources("anet", [zonemgr.Property("id", "0")]) |
fc9c815fce00
20410887 Solaris Nova driver should be resilient when network info is None
david.comay@oracle.com
parents:
4982
diff
changeset
|
1579 |
return |
fc9c815fce00
20410887 Solaris Nova driver should be resilient when network info is None
david.comay@oracle.com
parents:
4982
diff
changeset
|
1580 |
|
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1581 |
for vifid, vif in enumerate(network_info): |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1582 |
LOG.debug("%s", jsonutils.dumps(vif, indent=5)) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1583 |
|
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1584 |
# get all the info common to both EVS or OVS based VIF |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1585 |
ip = vif['network']['subnets'][0]['ips'][0]['address'] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1586 |
cidr = vif['network']['subnets'][0]['cidr'] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1587 |
ip_cidr = "%s/%s" % (ip, cidr.split('/')[1]) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1588 |
ip_version = vif['network']['subnets'][0]['version'] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1589 |
dhcp_server = \ |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1590 |
vif['network']['subnets'][0]['meta'].get('dhcp_server') |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1591 |
enable_dhcp = dhcp_server is not None |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1592 |
route = vif['network']['subnets'][0]['gateway']['address'] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1593 |
dns_list = vif['network']['subnets'][0]['dns'] |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1594 |
nameservers = [] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1595 |
for dns in dns_list: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1596 |
if dns['type'] == 'dns': |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1597 |
nameservers.append(dns['address']) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1598 |
|
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1599 |
# for EVS based VIFs the type is empty since EVS plugin |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1600 |
# doesn't support portbinding extension |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1601 |
if not vif['type']: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1602 |
anetname = self._set_evs_info(zone, brand, vifid, vif) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1603 |
else: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1604 |
anetname = self._set_ovs_info(context, zone, brand, vifid, vif) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1605 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1606 |
# create the required sysconfig file (or skip if this is part of a |
5436
2c7413fb2a81
22691630 attempting to resize or evacuate with a network is broken
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5405
diff
changeset
|
1607 |
# resize or evacuate process) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1608 |
tstate = instance['task_state'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1609 |
if tstate not in [task_states.RESIZE_FINISH, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1610 |
task_states.RESIZE_REVERTING, |
5436
2c7413fb2a81
22691630 attempting to resize or evacuate with a network is broken
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5405
diff
changeset
|
1611 |
task_states.RESIZE_MIGRATING, |
2c7413fb2a81
22691630 attempting to resize or evacuate with a network is broken
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5405
diff
changeset
|
1612 |
task_states.REBUILD_SPAWNING] or \ |
2c7413fb2a81
22691630 attempting to resize or evacuate with a network is broken
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5405
diff
changeset
|
1613 |
(tstate == task_states.REBUILD_SPAWNING and |
2c7413fb2a81
22691630 attempting to resize or evacuate with a network is broken
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5405
diff
changeset
|
1614 |
instance.system_metadata['rebuilding']): |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1615 |
if enable_dhcp: |
6178
a11e4cbcf3d2
23523730 zonecfg:cpu-arch missing from supported zone properties in extra_specs
david.comay@oracle.com
parents:
6123
diff
changeset
|
1616 |
tree = sysconfig.create_ncp_defaultfixed( |
a11e4cbcf3d2
23523730 zonecfg:cpu-arch missing from supported zone properties in extra_specs
david.comay@oracle.com
parents:
6123
diff
changeset
|
1617 |
'dhcp', anetname, vifid, ip_version) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1618 |
else: |
6178
a11e4cbcf3d2
23523730 zonecfg:cpu-arch missing from supported zone properties in extra_specs
david.comay@oracle.com
parents:
6123
diff
changeset
|
1619 |
tree = sysconfig.create_ncp_defaultfixed( |
a11e4cbcf3d2
23523730 zonecfg:cpu-arch missing from supported zone properties in extra_specs
david.comay@oracle.com
parents:
6123
diff
changeset
|
1620 |
'static', anetname, vifid, ip_version, ip_cidr, route, |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1621 |
nameservers) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1622 |
|
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1623 |
fp = os.path.join(sc_dir, 'zone-network-%d.xml' % vifid) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1624 |
sysconfig.create_sc_profile(fp, tree) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1625 |
|
4781
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
1626 |
def _set_suspend(self, instance): |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
1627 |
"""Use the instance name to specify the pathname for the suspend image. |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
1628 |
""" |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
1629 |
name = instance['name'] |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
1630 |
zone = self._get_zone_by_name(name) |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
1631 |
if zone is None: |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
1632 |
raise exception.InstanceNotFound(instance_id=name) |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
1633 |
|
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
1634 |
path = os.path.join(CONF.zones_suspend_path, '%{zonename}') |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
1635 |
with ZoneConfig(zone) as zc: |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
1636 |
zc.addresource('suspend', [zonemgr.Property('path', path)]) |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
1637 |
|
4695
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1638 |
def _verify_sysconfig(self, sc_dir, instance, admin_password=None): |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1639 |
"""verify the SC profile(s) passed in contain an entry for |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1640 |
system/config-user to configure the root account. If an SSH key is |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1641 |
specified, configure root's profile to use it. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1642 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1643 |
usercheck = lambda e: e.attrib.get('name') == 'system/config-user' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1644 |
hostcheck = lambda e: e.attrib.get('name') == 'system/identity' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1645 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1646 |
root_account_needed = True |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1647 |
hostname_needed = True |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1648 |
sshkey = instance.get('key_data') |
4736
455a1830e5e8
21542088 VM's display_name is used instead of hostname to set the hostname for VM
Drew Fisher <drew.fisher@oracle.com>
parents:
4695
diff
changeset
|
1649 |
name = instance.get('hostname') |
4695
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1650 |
encrypted_password = None |
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1651 |
|
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1652 |
# encrypt admin password, using SHA-256 as default |
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1653 |
if admin_password is not None: |
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1654 |
encrypted_password = sha256_crypt.encrypt(admin_password) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1655 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1656 |
# find all XML files in sc_dir |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1657 |
for root, dirs, files in os.walk(sc_dir): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1658 |
for fname in [f for f in files if f.endswith(".xml")]: |
1908
702ae3973fcc
18793920 nova traceback when provided multiple SMF profiles
Drew Fisher <drew.fisher@oracle.com>
parents:
1840
diff
changeset
|
1659 |
fileroot = etree.parse(os.path.join(root, fname)) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1660 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1661 |
# look for config-user properties |
1908
702ae3973fcc
18793920 nova traceback when provided multiple SMF profiles
Drew Fisher <drew.fisher@oracle.com>
parents:
1840
diff
changeset
|
1662 |
if filter(usercheck, fileroot.findall('service')): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1663 |
# a service element was found for config-user. Verify |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1664 |
# root's password is set, the admin account name is set and |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1665 |
# the admin's password is set |
1908
702ae3973fcc
18793920 nova traceback when provided multiple SMF profiles
Drew Fisher <drew.fisher@oracle.com>
parents:
1840
diff
changeset
|
1666 |
pgs = fileroot.iter('property_group') |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1667 |
for pg in pgs: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1668 |
if pg.attrib.get('name') == 'root_account': |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1669 |
root_account_needed = False |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1670 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1671 |
# look for identity properties |
1908
702ae3973fcc
18793920 nova traceback when provided multiple SMF profiles
Drew Fisher <drew.fisher@oracle.com>
parents:
1840
diff
changeset
|
1672 |
if filter(hostcheck, fileroot.findall('service')): |
702ae3973fcc
18793920 nova traceback when provided multiple SMF profiles
Drew Fisher <drew.fisher@oracle.com>
parents:
1840
diff
changeset
|
1673 |
for props in fileroot.iter('propval'): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1674 |
if props.attrib.get('name') == 'nodename': |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1675 |
hostname_needed = False |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1676 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1677 |
# Verify all of the requirements were met. Create the required SMF |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1678 |
# profile(s) if needed. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1679 |
if root_account_needed: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1680 |
fp = os.path.join(sc_dir, 'config-root.xml') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1681 |
|
4695
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1682 |
if admin_password is not None and sshkey is not None: |
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1683 |
# store password for horizon retrieval |
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1684 |
ctxt = nova_context.get_admin_context() |
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1685 |
enc = crypto.ssh_encrypt_text(sshkey, admin_password) |
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1686 |
instance.system_metadata.update( |
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1687 |
password.convert_password(ctxt, base64.b64encode(enc))) |
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1688 |
instance.save() |
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1689 |
|
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1690 |
if encrypted_password is not None or sshkey is not None: |
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1691 |
# set up the root account as 'normal' with no expiration, |
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1692 |
# an ssh key, and a root password |
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1693 |
tree = sysconfig.create_default_root_account( |
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1694 |
sshkey=sshkey, password=encrypted_password) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1695 |
else: |
4695
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1696 |
# sets up root account with expiration if sshkey is None |
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1697 |
# and password is none |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1698 |
tree = sysconfig.create_default_root_account(expire='0') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1699 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1700 |
sysconfig.create_sc_profile(fp, tree) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1701 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1702 |
elif sshkey is not None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1703 |
fp = os.path.join(sc_dir, 'config-root-ssh-keys.xml') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1704 |
tree = sysconfig.create_root_ssh_keys(sshkey) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1705 |
sysconfig.create_sc_profile(fp, tree) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1706 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1707 |
if hostname_needed and name is not None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1708 |
fp = os.path.join(sc_dir, 'hostname.xml') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1709 |
sysconfig.create_sc_profile(fp, sysconfig.create_hostname(name)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1710 |
|
4695
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1711 |
def _create_config(self, context, instance, network_info, connection_info, |
5191
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
1712 |
sc_dir, admin_password=None): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1713 |
"""Create a new Solaris Zone configuration.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1714 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1715 |
if self._get_zone_by_name(name) is not None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1716 |
raise exception.InstanceExists(name=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1717 |
|
5191
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
1718 |
extra_specs = self._get_extra_specs(instance) |
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
1719 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1720 |
# If unspecified, default zone brand is ZONE_BRAND_SOLARIS |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1721 |
brand = extra_specs.get('zonecfg:brand', ZONE_BRAND_SOLARIS) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1722 |
template = ZONE_BRAND_TEMPLATE.get(brand) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1723 |
# TODO(dcomay): Detect capability via libv12n(3LIB) or virtinfo(1M). |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1724 |
if template is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1725 |
msg = (_("Invalid brand '%s' specified for instance '%s'" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1726 |
% (brand, name))) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1727 |
raise exception.NovaException(msg) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1728 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1729 |
tstate = instance['task_state'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1730 |
if tstate not in [task_states.RESIZE_FINISH, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1731 |
task_states.RESIZE_REVERTING, |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1732 |
task_states.RESIZE_MIGRATING, |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1733 |
task_states.REBUILD_SPAWNING] or \ |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1734 |
(tstate == task_states.REBUILD_SPAWNING and |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1735 |
instance.system_metadata['rebuilding']): |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1736 |
sc_profile = extra_specs.get('install:sc_profile') |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1737 |
if sc_profile is not None: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1738 |
if os.path.isfile(sc_profile): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1739 |
shutil.copy(sc_profile, sc_dir) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1740 |
elif os.path.isdir(sc_profile): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1741 |
shutil.copytree(sc_profile, os.path.join(sc_dir, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1742 |
'sysconfig')) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1743 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1744 |
self._verify_sysconfig(sc_dir, instance, admin_password) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1745 |
|
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
1746 |
LOG.debug(_("Creating zone configuration for '%s' (%s)") |
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
1747 |
% (name, instance['display_name'])) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1748 |
try: |
5610
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
1749 |
self.zone_manager.create(name, None, template) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1750 |
self._set_global_properties(name, extra_specs, brand) |
6260
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
1751 |
hostid = instance.system_metadata.get('hostid') |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
1752 |
if hostid: |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
1753 |
zone = self._get_zone_by_name(name) |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
1754 |
with ZoneConfig(zone) as zc: |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
1755 |
zc.setprop('global', 'hostid', hostid) |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
1756 |
|
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
1757 |
if connection_info is not None: |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1758 |
self._set_boot_device(name, connection_info, brand) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1759 |
self._set_num_cpu(name, instance['vcpus'], brand) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1760 |
self._set_memory_cap(name, instance['memory_mb'], brand) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1761 |
self._set_network(context, name, instance, network_info, brand, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1762 |
sc_dir) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1763 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1764 |
reason = zonemgr_strerror(ex) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1765 |
LOG.error(_("Unable to create configuration for instance '%s' via " |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1766 |
"zonemgr(3RAD): %s") % (name, reason)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1767 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1768 |
|
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1769 |
def _create_vnc_console_service(self, instance): |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1770 |
"""Create a VNC console SMF service for a Solaris Zone""" |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1771 |
# Basic environment checks first: vncserver and xterm |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1772 |
if not os.path.exists(VNC_SERVER_PATH): |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1773 |
LOG.warning(_("Zone VNC console SMF service not available on this " |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1774 |
"compute node. %s is missing. Run 'pkg install " |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1775 |
"x11/server/xvnc'") % VNC_SERVER_PATH) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1776 |
raise exception.ConsoleTypeUnavailable(console_type='vnc') |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1777 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1778 |
if not os.path.exists(XTERM_PATH): |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1779 |
LOG.warning(_("Zone VNC console SMF service not available on this " |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1780 |
"compute node. %s is missing. Run 'pkg install " |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1781 |
"terminal/xterm'") % XTERM_PATH) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1782 |
raise exception.ConsoleTypeUnavailable(console_type='vnc') |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1783 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1784 |
name = instance['name'] |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1785 |
# TODO(npower): investigate using RAD instead of CLI invocation |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1786 |
try: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1787 |
out, err = utils.execute('/usr/sbin/svccfg', '-s', |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1788 |
VNC_CONSOLE_BASE_FMRI, 'add', name) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1789 |
except processutils.ProcessExecutionError as ex: |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1790 |
if self._has_vnc_console_service(instance): |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1791 |
LOG.debug(_("Ignoring attempt to create existing zone VNC " |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1792 |
"console SMF service for instance '%s'") % name) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1793 |
return |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1794 |
reason = ex.stderr |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1795 |
LOG.error(_("Unable to create zone VNC console SMF service " |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1796 |
"'{0}': {1}").format( |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1797 |
VNC_CONSOLE_BASE_FMRI + ':' + name, reason)) |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1798 |
raise |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1799 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1800 |
def _delete_vnc_console_service(self, instance): |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1801 |
"""Delete a VNC console SMF service for a Solaris Zone""" |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1802 |
name = instance['name'] |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1803 |
self._disable_vnc_console_service(instance) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1804 |
# TODO(npower): investigate using RAD instead of CLI invocation |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1805 |
try: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1806 |
out, err = utils.execute('/usr/sbin/svccfg', '-s', |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1807 |
VNC_CONSOLE_BASE_FMRI, 'delete', name) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1808 |
except processutils.ProcessExecutionError as ex: |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1809 |
if not self._has_vnc_console_service(instance): |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1810 |
LOG.debug(_("Ignoring attempt to delete a non-existent zone " |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1811 |
"VNC console SMF service for instance '%s'") |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1812 |
% name) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1813 |
return |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1814 |
reason = ex.stderr |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1815 |
LOG.error(_("Unable to delete zone VNC console SMF service '%s': " |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1816 |
"%s") |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1817 |
% (VNC_CONSOLE_BASE_FMRI + ':' + name, reason)) |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1818 |
raise |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1819 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1820 |
def _enable_vnc_console_service(self, instance): |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1821 |
"""Enable a zone VNC console SMF service""" |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1822 |
name = instance['name'] |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1823 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1824 |
console_fmri = VNC_CONSOLE_BASE_FMRI + ':' + name |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1825 |
# TODO(npower): investigate using RAD instead of CLI invocation |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1826 |
try: |
4553
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
1827 |
# The console SMF service exits with SMF_TEMP_DISABLE to prevent |
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
1828 |
# unnecessarily coming online at boot. Tell it to really bring |
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
1829 |
# it online. |
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
1830 |
out, err = utils.execute('/usr/sbin/svccfg', '-s', console_fmri, |
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
1831 |
'setprop', 'vnc/nova-enabled=true') |
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
1832 |
out, err = utils.execute('/usr/sbin/svccfg', '-s', console_fmri, |
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
1833 |
'refresh') |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1834 |
out, err = utils.execute('/usr/sbin/svcadm', 'enable', |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1835 |
console_fmri) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1836 |
except processutils.ProcessExecutionError as ex: |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1837 |
if not self._has_vnc_console_service(instance): |
4553
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
1838 |
LOG.debug(_("Ignoring attempt to enable a non-existent zone " |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1839 |
"VNC console SMF service for instance '%s'") |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1840 |
% name) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1841 |
return |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1842 |
reason = ex.stderr |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1843 |
LOG.error(_("Unable to start zone VNC console SMF service " |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1844 |
"'%s': %s") % (console_fmri, reason)) |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1845 |
raise |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1846 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1847 |
# Allow some time for the console service to come online. |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1848 |
greenthread.sleep(2) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1849 |
while True: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1850 |
try: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1851 |
out, err = utils.execute('/usr/bin/svcs', '-H', '-o', 'state', |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1852 |
console_fmri) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1853 |
state = out.strip() |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1854 |
if state == 'online': |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1855 |
break |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1856 |
elif state in ['maintenance', 'offline']: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1857 |
LOG.error(_("Zone VNC console SMF service '%s' is in the " |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1858 |
"'%s' state. Run 'svcs -x %s' for details.") |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1859 |
% (console_fmri, state, console_fmri)) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1860 |
raise exception.ConsoleNotFoundForInstance( |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1861 |
instance_uuid=instance['uuid']) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1862 |
# Wait for service state to transition to (hopefully) online |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1863 |
# state or offline/maintenance states. |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1864 |
greenthread.sleep(2) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1865 |
except processutils.ProcessExecutionError as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1866 |
reason = ex.stderr |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1867 |
LOG.error(_("Error querying state of zone VNC console SMF " |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1868 |
"service '%s': %s") % (console_fmri, reason)) |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1869 |
raise |
4553
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
1870 |
# TODO(npower): investigate using RAD instead of CLI invocation |
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
1871 |
try: |
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
1872 |
# The console SMF service exits with SMF_TEMP_DISABLE to prevent |
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
1873 |
# unnecessarily coming online at boot. Make that happen. |
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
1874 |
out, err = utils.execute('/usr/sbin/svccfg', '-s', console_fmri, |
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
1875 |
'setprop', 'vnc/nova-enabled=false') |
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
1876 |
out, err = utils.execute('/usr/sbin/svccfg', '-s', console_fmri, |
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
1877 |
'refresh') |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1878 |
except processutils.ProcessExecutionError as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1879 |
reason = ex.stderr |
4553
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
1880 |
LOG.error(_("Unable to update 'vnc/nova-enabled' property for " |
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
1881 |
"zone VNC console SMF service " |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1882 |
"'%s': %s") % (console_fmri, reason)) |
4553
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
1883 |
raise |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1884 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1885 |
def _disable_vnc_console_service(self, instance): |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1886 |
"""Disable a zone VNC console SMF service""" |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1887 |
name = instance['name'] |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1888 |
if not self._has_vnc_console_service(instance): |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1889 |
LOG.debug(_("Ignoring attempt to disable a non-existent zone VNC " |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1890 |
"console SMF service for instance '%s'") % name) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1891 |
return |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1892 |
console_fmri = VNC_CONSOLE_BASE_FMRI + ':' + name |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1893 |
# TODO(npower): investigate using RAD instead of CLI invocation |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1894 |
try: |
4692
c1143cad49f2
21439855 Console SMF instance remains after nova instance is deleted
Niall Power <niall.power@oracle.com>
parents:
4671
diff
changeset
|
1895 |
out, err = utils.execute('/usr/sbin/svcadm', 'disable', '-s', |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1896 |
console_fmri) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1897 |
except processutils.ProcessExecutionError as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1898 |
reason = ex.stderr |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1899 |
LOG.error(_("Unable to disable zone VNC console SMF service " |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1900 |
"'%s': %s") % (console_fmri, reason)) |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1901 |
# The console service sets a SMF instance property for the port |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1902 |
# on which the VNC service is listening. The service needs to be |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1903 |
# refreshed to reset the property value |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1904 |
try: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1905 |
out, err = utils.execute('/usr/sbin/svccfg', '-s', console_fmri, |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1906 |
'refresh') |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1907 |
except processutils.ProcessExecutionError as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1908 |
reason = ex.stderr |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1909 |
LOG.error(_("Unable to refresh zone VNC console SMF service " |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1910 |
"'%s': %s") % (console_fmri, reason)) |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1911 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1912 |
def _get_vnc_console_service_state(self, instance): |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1913 |
"""Returns state of the instance zone VNC console SMF service""" |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1914 |
name = instance['name'] |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1915 |
if not self._has_vnc_console_service(instance): |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1916 |
LOG.warning(_("Console state requested for a non-existent zone " |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1917 |
"VNC console SMF service for instance '%s'") |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1918 |
% name) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1919 |
return None |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1920 |
console_fmri = VNC_CONSOLE_BASE_FMRI + ':' + name |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1921 |
# TODO(npower): investigate using RAD instead of CLI invocation |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1922 |
try: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1923 |
state, err = utils.execute('/usr/sbin/svcs', '-H', '-o', 'state', |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1924 |
console_fmri) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1925 |
return state.strip() |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1926 |
except processutils.ProcessExecutionError as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1927 |
reason = ex.stderr |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1928 |
LOG.error(_("Console state request failed for zone VNC console " |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1929 |
"SMF service for instance '%s': %s") |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1930 |
% (name, reason)) |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1931 |
raise |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1932 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1933 |
def _has_vnc_console_service(self, instance): |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1934 |
"""Returns True if the instance has a zone VNC console SMF service""" |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1935 |
name = instance['name'] |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1936 |
console_fmri = VNC_CONSOLE_BASE_FMRI + ':' + name |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1937 |
# TODO(npower): investigate using RAD instead of CLI invocation |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1938 |
try: |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
1939 |
utils.execute('/usr/bin/svcs', '-H', '-o', 'state', console_fmri) |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1940 |
return True |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1941 |
except Exception: |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1942 |
return False |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1943 |
|
5191
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
1944 |
def _install(self, instance, image, sc_dir): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1945 |
"""Install a new Solaris Zone root file system.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1946 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1947 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1948 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1949 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1950 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1951 |
# log the zone's configuration |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1952 |
with ZoneConfig(zone) as zc: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1953 |
LOG.debug("-" * 80) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1954 |
LOG.debug(zc.zone.exportConfig(True)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1955 |
LOG.debug("-" * 80) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1956 |
|
4832
eef9ea54fabe
21761279 Driver erroneously includes trailing space in zone.install() arguments
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4781
diff
changeset
|
1957 |
options = ['-a', image] |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1958 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1959 |
if os.listdir(sc_dir): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1960 |
# the directory isn't empty so pass it along to install |
4832
eef9ea54fabe
21761279 Driver erroneously includes trailing space in zone.install() arguments
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4781
diff
changeset
|
1961 |
options.extend(['-c', sc_dir]) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1962 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1963 |
try: |
5193
3120ba36a435
22195615 sysconfig temporary directory not always cleaned up
david.comay@oracle.com
parents:
5192
diff
changeset
|
1964 |
LOG.debug(_("Installing instance '%s' (%s)") % |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1965 |
(name, instance['display_name'])) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1966 |
zone.install(options=options) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1967 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1968 |
reason = zonemgr_strerror(ex) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1969 |
LOG.error(_("Unable to install root file system for instance '%s' " |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1970 |
"via zonemgr(3RAD): %s") % (name, reason)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1971 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1972 |
|
6260
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
1973 |
self._set_instance_metahostid(instance) |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
1974 |
|
5193
3120ba36a435
22195615 sysconfig temporary directory not always cleaned up
david.comay@oracle.com
parents:
5192
diff
changeset
|
1975 |
LOG.debug(_("Installation of instance '%s' (%s) complete") % |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1976 |
(name, instance['display_name'])) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1977 |
|
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1978 |
def _power_on(self, instance, network_info): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1979 |
"""Power on a Solaris Zone.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1980 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1981 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1982 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1983 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1984 |
|
6260
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
1985 |
# Attempt to update the zones hostid in the instance data, to catch |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
1986 |
# those instances that might have been created without a hostid stored. |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
1987 |
self._set_instance_metahostid(instance) |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
1988 |
|
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
1989 |
bootargs = [] |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
1990 |
if CONF.solariszones_boot_options: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
1991 |
reset_bootargs = False |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
1992 |
persistent = 'False' |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
1993 |
|
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
1994 |
# Get any bootargs already set in the zone |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
1995 |
cur_bootargs = lookup_resource_property(zone, 'global', 'bootargs') |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
1996 |
|
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
1997 |
# Get any bootargs set in the instance metadata by the user |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
1998 |
meta_bootargs = instance.metadata.get('bootargs') |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
1999 |
|
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2000 |
if meta_bootargs: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2001 |
bootargs = ['--', str(meta_bootargs)] |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2002 |
persistent = str(instance.metadata.get('bootargs_persist', |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2003 |
'False')) |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2004 |
if cur_bootargs is not None and meta_bootargs != cur_bootargs: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2005 |
with ZoneConfig(zone) as zc: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2006 |
reset_bootargs = True |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2007 |
# Temporarily clear bootargs in zone config |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2008 |
zc.clear_resource_props('global', ['bootargs']) |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2009 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2010 |
try: |
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2011 |
zone.boot(bootargs) |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
2012 |
self._plug_vifs(instance, network_info) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2013 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2014 |
reason = zonemgr_strerror(ex) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2015 |
LOG.error(_("Unable to power on instance '%s' via zonemgr(3RAD): " |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2016 |
"%s") % (name, reason)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2017 |
raise exception.InstancePowerOnFailure(reason=reason) |
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2018 |
finally: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2019 |
if CONF.solariszones_boot_options: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2020 |
if meta_bootargs and persistent.lower() == 'false': |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2021 |
# We have consumed the metadata bootargs and |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2022 |
# the user asked for them not to be persistent so |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2023 |
# clear them out now. |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2024 |
instance.metadata.pop('bootargs', None) |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2025 |
instance.metadata.pop('bootargs_persist', None) |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2026 |
|
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2027 |
if reset_bootargs: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2028 |
with ZoneConfig(zone) as zc: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2029 |
# restore original boot args in zone config |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2030 |
zc.setprop('global', 'bootargs', cur_bootargs) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2031 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2032 |
def _uninstall(self, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2033 |
"""Uninstall an existing Solaris Zone root file system.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2034 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2035 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2036 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2037 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2038 |
|
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2039 |
if zone.state == ZONE_STATE_CONFIGURED: |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2040 |
LOG.debug(_("Uninstall not required for zone '%s' in state '%s'") |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2041 |
% (name, zone.state)) |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2042 |
return |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2043 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2044 |
zone.uninstall(['-F']) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2045 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2046 |
reason = zonemgr_strerror(ex) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2047 |
LOG.error(_("Unable to uninstall root file system for instance " |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2048 |
"'%s' via zonemgr(3RAD): %s") % (name, reason)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2049 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2050 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2051 |
def _delete_config(self, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2052 |
"""Delete an existing Solaris Zone configuration.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2053 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2054 |
if self._get_zone_by_name(name) is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2055 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2056 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2057 |
try: |
5610
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
2058 |
self.zone_manager.delete(name) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2059 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2060 |
reason = zonemgr_strerror(ex) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2061 |
LOG.error(_("Unable to delete configuration for instance '%s' via " |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2062 |
"zonemgr(3RAD): %s") % (name, reason)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2063 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2064 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2065 |
def spawn(self, context, instance, image_meta, injected_files, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2066 |
admin_password, network_info=None, block_device_info=None): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2067 |
"""Create a new instance/VM/domain on the virtualization platform. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2068 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2069 |
Once this successfully completes, the instance should be |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2070 |
running (power_state.RUNNING). |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2071 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2072 |
If this fails, any partial instance should be completely |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2073 |
cleaned up, and the virtualization platform should be in the state |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2074 |
that it was before this call began. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2075 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2076 |
:param context: security context |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2077 |
:param instance: nova.objects.instance.Instance |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2078 |
This function should use the data there to guide |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2079 |
the creation of the new instance. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2080 |
:param image_meta: image object returned by nova.image.glance that |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2081 |
defines the image from which to boot this instance |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2082 |
:param injected_files: User files to inject into instance. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2083 |
:param admin_password: Administrator password to set in instance. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2084 |
:param network_info: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2085 |
:py:meth:`~nova.network.manager.NetworkManager.get_instance_nw_info` |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2086 |
:param block_device_info: Information about block devices to be |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2087 |
attached to the instance. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2088 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2089 |
image = self._fetch_image(context, instance) |
5607
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
2090 |
self._validate_image(context, image, instance) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2091 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2092 |
# create a new directory for SC profiles |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2093 |
sc_dir = tempfile.mkdtemp(prefix="nova-sysconfig-", |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2094 |
dir=CONF.state_path) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2095 |
os.chmod(sc_dir, 0755) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2096 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2097 |
# Attempt to provision a (Cinder) volume service backed boot volume |
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2098 |
volume = self._create_boot_volume(context, instance) |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2099 |
volume_id = volume['id'] |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2100 |
# c1d0 is the standard dev for for default boot device. |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2101 |
# Irrelevant value for ZFS, but Cinder gets stroppy without it. |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2102 |
mountpoint = "c1d0" |
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
2103 |
name = instance['name'] |
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2104 |
try: |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2105 |
connection_info = self._connect_boot_volume(volume, mountpoint, |
5191
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2106 |
context, instance) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2107 |
except exception.InvalidVolume as reason: |
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2108 |
# This Cinder volume is not usable for ZOSS so discard it. |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2109 |
# zonecfg will apply default zonepath dataset configuration |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2110 |
# instead. Carry on |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2111 |
LOG.warning(_("Volume '%s' is being discarded: %s") |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2112 |
% (volume_id, reason)) |
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2113 |
self._volume_api.delete(context, volume_id) |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2114 |
connection_info = None |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2115 |
except Exception as reason: |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2116 |
# Something really bad happened. Don't pass Go. |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2117 |
LOG.error(_("Unable to attach root zpool volume '%s' to instance " |
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
2118 |
"%s: %s") % (volume['id'], name, reason)) |
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2119 |
self._volume_api.delete(context, volume_id) |
5193
3120ba36a435
22195615 sysconfig temporary directory not always cleaned up
david.comay@oracle.com
parents:
5192
diff
changeset
|
2120 |
# remove the sc_profile temp directory |
3120ba36a435
22195615 sysconfig temporary directory not always cleaned up
david.comay@oracle.com
parents:
5192
diff
changeset
|
2121 |
shutil.rmtree(sc_dir) |
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2122 |
raise |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2123 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2124 |
try: |
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
2125 |
self._create_config(context, instance, network_info, |
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
2126 |
connection_info, sc_dir, admin_password) |
5191
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2127 |
self._install(instance, image, sc_dir) |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
2128 |
self._power_on(instance, network_info) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2129 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2130 |
reason = zonemgr_strerror(ex) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2131 |
LOG.error(_("Unable to spawn instance '%s' via zonemgr(3RAD): %s") |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2132 |
% (name, reason)) |
5641
a48a4735fa25
22854356 Failed non-global zone launches leaving instance zpool suspended
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5640
diff
changeset
|
2133 |
# At least attempt to uninstall the instance, depending on where |
a48a4735fa25
22854356 Failed non-global zone launches leaving instance zpool suspended
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5640
diff
changeset
|
2134 |
# the installation got to there could be things left behind that |
a48a4735fa25
22854356 Failed non-global zone launches leaving instance zpool suspended
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5640
diff
changeset
|
2135 |
# need to be cleaned up, e.g a root zpool etc. |
a48a4735fa25
22854356 Failed non-global zone launches leaving instance zpool suspended
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5640
diff
changeset
|
2136 |
try: |
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
2137 |
self._uninstall(instance) |
5641
a48a4735fa25
22854356 Failed non-global zone launches leaving instance zpool suspended
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5640
diff
changeset
|
2138 |
except Exception as ex: |
5847
230bb7c2a9fb
23169819 traceback when failing to uninstall zone
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5641
diff
changeset
|
2139 |
reason = zonemgr_strerror(ex) |
5641
a48a4735fa25
22854356 Failed non-global zone launches leaving instance zpool suspended
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5640
diff
changeset
|
2140 |
LOG.debug(_("Unable to uninstall instance '%s' via " |
a48a4735fa25
22854356 Failed non-global zone launches leaving instance zpool suspended
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5640
diff
changeset
|
2141 |
"zonemgr(3RAD): %s") % (name, reason)) |
a48a4735fa25
22854356 Failed non-global zone launches leaving instance zpool suspended
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5640
diff
changeset
|
2142 |
try: |
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
2143 |
self._delete_config(instance) |
5641
a48a4735fa25
22854356 Failed non-global zone launches leaving instance zpool suspended
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5640
diff
changeset
|
2144 |
except Exception as ex: |
5847
230bb7c2a9fb
23169819 traceback when failing to uninstall zone
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5641
diff
changeset
|
2145 |
reason = zonemgr_strerror(ex) |
5641
a48a4735fa25
22854356 Failed non-global zone launches leaving instance zpool suspended
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5640
diff
changeset
|
2146 |
LOG.debug(_("Unable to unconfigure instance '%s' via " |
a48a4735fa25
22854356 Failed non-global zone launches leaving instance zpool suspended
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5640
diff
changeset
|
2147 |
"zonemgr(3RAD): %s") % (name, reason)) |
a48a4735fa25
22854356 Failed non-global zone launches leaving instance zpool suspended
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5640
diff
changeset
|
2148 |
|
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
2149 |
if connection_info is not None: |
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2150 |
self._volume_api.detach(context, volume_id) |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2151 |
self._volume_api.delete(context, volume_id) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2152 |
raise |
5193
3120ba36a435
22195615 sysconfig temporary directory not always cleaned up
david.comay@oracle.com
parents:
5192
diff
changeset
|
2153 |
finally: |
3120ba36a435
22195615 sysconfig temporary directory not always cleaned up
david.comay@oracle.com
parents:
5192
diff
changeset
|
2154 |
# remove the sc_profile temp directory |
3120ba36a435
22195615 sysconfig temporary directory not always cleaned up
david.comay@oracle.com
parents:
5192
diff
changeset
|
2155 |
shutil.rmtree(sc_dir) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2156 |
|
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
2157 |
if connection_info is not None: |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2158 |
bdm_obj = objects.BlockDeviceMappingList() |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2159 |
# there's only one bdm for this instance at this point |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2160 |
bdm = bdm_obj.get_by_instance_uuid(context, |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2161 |
instance.uuid).objects[0] |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2162 |
|
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2163 |
# update the required attributes |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2164 |
bdm['connection_info'] = jsonutils.dumps(connection_info) |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2165 |
bdm['source_type'] = 'volume' |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2166 |
bdm['destination_type'] = 'volume' |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2167 |
bdm['device_name'] = mountpoint |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2168 |
bdm['delete_on_termination'] = True |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2169 |
bdm['volume_id'] = volume_id |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2170 |
bdm['volume_size'] = instance['root_gb'] |
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2171 |
bdm.save() |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2172 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2173 |
def _power_off(self, instance, halt_type): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2174 |
"""Power off a Solaris Zone.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2175 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2176 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2177 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2178 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2179 |
|
6260
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
2180 |
# Attempt to update the zones hostid in the instance data, to catch |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
2181 |
# those instances that might have been created without a hostid stored. |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
2182 |
self._set_instance_metahostid(instance) |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
2183 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2184 |
try: |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
2185 |
self._unplug_vifs(instance) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2186 |
if halt_type == 'SOFT': |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2187 |
zone.shutdown() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2188 |
else: |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2189 |
# 'HARD' |
3521
958ebf9deed1
20052466 remove _ai_health_check() from driver.py now that 18857274 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents:
1990
diff
changeset
|
2190 |
zone.halt() |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2191 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2192 |
reason = zonemgr_strerror(ex) |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2193 |
if isinstance(ex, rad.client.ObjectError): |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2194 |
code = ex.get_payload().code |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2195 |
if code == zonemgr.ErrorCode.COMMAND_ERROR: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2196 |
LOG.warning(_("Ignoring command error returned while " |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2197 |
"trying to power off instance '%s' via " |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2198 |
"zonemgr(3RAD): %s" % (name, reason))) |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2199 |
return |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2200 |
LOG.error(_("Unable to power off instance '%s' via zonemgr(3RAD): " |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2201 |
"%s") % (name, reason)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2202 |
raise exception.InstancePowerOffFailure(reason=reason) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2203 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2204 |
def _samehost_revert_resize(self, context, instance, network_info, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2205 |
block_device_info): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2206 |
"""Reverts the zones configuration to pre-resize config |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2207 |
""" |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2208 |
self.power_off(instance) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2209 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2210 |
extra_specs = self._get_extra_specs(instance) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2211 |
brand = extra_specs.get('zonecfg:brand', ZONE_BRAND_SOLARIS) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2212 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2213 |
name = instance['name'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2214 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2215 |
self._set_num_cpu(name, instance.vcpus, brand) |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2216 |
self._set_memory_cap(name, instance.memory_mb, brand) |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2217 |
|
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2218 |
rgb = instance.root_gb |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2219 |
old_rvid = instance.system_metadata.get('old_instance_volid') |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2220 |
if old_rvid: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2221 |
new_rvid = instance.system_metadata.get('new_instance_volid') |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2222 |
mount_dev = instance['root_device_name'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2223 |
del instance.system_metadata['old_instance_volid'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2224 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2225 |
self._resize_disk_migration(context, instance, new_rvid, old_rvid, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2226 |
rgb, mount_dev) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2227 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2228 |
def destroy(self, context, instance, network_info, block_device_info=None, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2229 |
destroy_disks=True, migrate_data=None): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2230 |
"""Destroy the specified instance from the Hypervisor. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2231 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2232 |
If the instance is not found (for example if networking failed), this |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2233 |
function should still succeed. It's probably a good idea to log a |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2234 |
warning in that case. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2235 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2236 |
:param context: security context |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2237 |
:param instance: Instance object as returned by DB layer. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2238 |
:param network_info: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2239 |
:py:meth:`~nova.network.manager.NetworkManager.get_instance_nw_info` |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2240 |
:param block_device_info: Information about block devices that should |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2241 |
be detached from the instance. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2242 |
:param destroy_disks: Indicates if disks should be destroyed |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2243 |
:param migrate_data: implementation specific params |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2244 |
""" |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2245 |
if (instance['task_state'] == task_states.RESIZE_REVERTING and |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2246 |
instance.system_metadata['old_vm_state'] == vm_states.RESIZED): |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2247 |
return |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2248 |
|
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
2249 |
# A destroy is issued for the original zone for an evac case. If |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
2250 |
# the evac fails we need to protect the zone from deletion when |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
2251 |
# power comes back on. |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
2252 |
evac_from = instance.system_metadata.get('evac_from') |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
2253 |
if evac_from is not None and instance['task_state'] is None: |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
2254 |
instance.host = evac_from |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
2255 |
instance.node = evac_from |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
2256 |
del instance.system_metadata['evac_from'] |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
2257 |
instance.save() |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
2258 |
|
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
2259 |
return |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
2260 |
|
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2261 |
try: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2262 |
# These methods log if problems occur so no need to double log |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2263 |
# here. Just catch any stray exceptions and allow destroy to |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2264 |
# proceed. |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2265 |
if self._has_vnc_console_service(instance): |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2266 |
self._disable_vnc_console_service(instance) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2267 |
self._delete_vnc_console_service(instance) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2268 |
except Exception: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2269 |
pass |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2270 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2271 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2272 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2273 |
# If instance cannot be found, just return. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2274 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2275 |
LOG.warning(_("Unable to find instance '%s' via zonemgr(3RAD)") |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2276 |
% name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2277 |
return |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2278 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2279 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2280 |
if self._get_state(zone) == power_state.RUNNING: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2281 |
self._power_off(instance, 'HARD') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2282 |
if self._get_state(zone) == power_state.SHUTDOWN: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2283 |
self._uninstall(instance) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2284 |
if self._get_state(zone) == power_state.NOSTATE: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2285 |
self._delete_config(instance) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2286 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2287 |
reason = zonemgr_strerror(ex) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2288 |
LOG.warning(_("Unable to destroy instance '%s' via zonemgr(3RAD): " |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2289 |
"%s") % (name, reason)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2290 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2291 |
# One last point of house keeping. If we are deleting the instance |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2292 |
# during a resize operation we want to make sure the cinder volumes are |
5252
947514442d05
22513201 nova resize revert will fail if there are volumes attached
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5196
diff
changeset
|
2293 |
# properly cleaned up. We need to do this here, because the periodic |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2294 |
# task that comes along and cleans these things up isn't nice enough to |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2295 |
# pass a context in so that we could simply do the work there. But |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2296 |
# because we have access to a context, we can handle the work here and |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2297 |
# let the periodic task simply clean up the left over zone |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2298 |
# configuration that might be left around. Note that the left over |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2299 |
# zone will only show up in zoneadm list, not nova list. |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2300 |
# |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2301 |
# If the task state is RESIZE_REVERTING do not process these because |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2302 |
# the cinder volume cleanup is taken care of in |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2303 |
# finish_revert_migration. |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2304 |
if instance['task_state'] == task_states.RESIZE_REVERTING: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2305 |
return |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2306 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2307 |
tags = ['old_instance_volid', 'new_instance_volid'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2308 |
for tag in tags: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2309 |
volid = instance.system_metadata.get(tag) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2310 |
if volid: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2311 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2312 |
LOG.debug(_("Deleting volume %s"), volid) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2313 |
self._volume_api.delete(context, volid) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2314 |
del instance.system_metadata[tag] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2315 |
except Exception: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2316 |
pass |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2317 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2318 |
def cleanup(self, context, instance, network_info, block_device_info=None, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2319 |
destroy_disks=True, migrate_data=None, destroy_vifs=True): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2320 |
"""Cleanup the instance resources . |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2321 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2322 |
Instance should have been destroyed from the Hypervisor before calling |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2323 |
this method. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2324 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2325 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2326 |
:param instance: Instance object as returned by DB layer. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2327 |
:param network_info: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2328 |
:py:meth:`~nova.network.manager.NetworkManager.get_instance_nw_info` |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2329 |
:param block_device_info: Information about block devices that should |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2330 |
be detached from the instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2331 |
:param destroy_disks: Indicates if disks should be destroyed |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2332 |
:param migrate_data: implementation specific params |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2333 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2334 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2335 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2336 |
def reboot(self, context, instance, network_info, reboot_type, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2337 |
block_device_info=None, bad_volumes_callback=None): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2338 |
"""Reboot the specified instance. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2339 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2340 |
After this is called successfully, the instance's state |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2341 |
goes back to power_state.RUNNING. The virtualization |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2342 |
platform should ensure that the reboot action has completed |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2343 |
successfully even in cases in which the underlying domain/vm |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2344 |
is paused or halted/stopped. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2345 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2346 |
:param instance: nova.objects.instance.Instance |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2347 |
:param network_info: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2348 |
:py:meth:`~nova.network.manager.NetworkManager.get_instance_nw_info` |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2349 |
:param reboot_type: Either a HARD or SOFT reboot |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2350 |
:param block_device_info: Info pertaining to attached volumes |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2351 |
:param bad_volumes_callback: Function to handle any bad volumes |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2352 |
encountered |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2353 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2354 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2355 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2356 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2357 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2358 |
|
1990
c1c6cc703d7a
18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
1944
diff
changeset
|
2359 |
if self._get_state(zone) == power_state.SHUTDOWN: |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
2360 |
self._power_on(instance, network_info) |
1990
c1c6cc703d7a
18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
1944
diff
changeset
|
2361 |
return |
c1c6cc703d7a
18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
1944
diff
changeset
|
2362 |
|
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2363 |
bootargs = [] |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2364 |
if CONF.solariszones_boot_options: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2365 |
reset_bootargs = False |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2366 |
persistent = 'False' |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2367 |
|
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2368 |
# Get any bootargs already set in the zone |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2369 |
cur_bootargs = lookup_resource_property(zone, 'global', 'bootargs') |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2370 |
|
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2371 |
# Get any bootargs set in the instance metadata by the user |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2372 |
meta_bootargs = instance.metadata.get('bootargs') |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2373 |
|
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2374 |
if meta_bootargs: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2375 |
bootargs = ['--', str(meta_bootargs)] |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2376 |
persistent = str(instance.metadata.get('bootargs_persist', |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2377 |
'False')) |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2378 |
if cur_bootargs is not None and meta_bootargs != cur_bootargs: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2379 |
with ZoneConfig(zone) as zc: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2380 |
reset_bootargs = True |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2381 |
# Temporarily clear bootargs in zone config |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2382 |
zc.clear_resource_props('global', ['bootargs']) |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2383 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2384 |
try: |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
2385 |
self._unplug_vifs(instance) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2386 |
if reboot_type == 'SOFT': |
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2387 |
bootargs.insert(0, '-r') |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2388 |
zone.shutdown(bootargs) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2389 |
else: |
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2390 |
zone.reboot(bootargs) |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
2391 |
self._plug_vifs(instance, network_info) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2392 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2393 |
reason = zonemgr_strerror(ex) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2394 |
LOG.error(_("Unable to reboot instance '%s' via zonemgr(3RAD): %s") |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2395 |
% (name, reason)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2396 |
raise exception.InstanceRebootFailure(reason=reason) |
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2397 |
finally: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2398 |
if CONF.solariszones_boot_options: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2399 |
if meta_bootargs and persistent.lower() == 'false': |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2400 |
# We have consumed the metadata bootargs and |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2401 |
# the user asked for them not to be persistent so |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2402 |
# clear them out now. |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2403 |
instance.metadata.pop('bootargs', None) |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2404 |
instance.metadata.pop('bootargs_persist', None) |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2405 |
|
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2406 |
if reset_bootargs: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2407 |
with ZoneConfig(zone) as zc: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2408 |
# restore original boot args in zone config |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2409 |
zc.setprop('global', 'bootargs', cur_bootargs) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2410 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2411 |
def get_console_pool_info(self, console_type): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2412 |
# TODO(Vek): Need to pass context in for access to auth_token |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2413 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2414 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2415 |
def _get_console_output(self, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2416 |
"""Builds a string containing the console output (capped at |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2417 |
MAX_CONSOLE_BYTES characters) by reassembling the log files |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2418 |
that Solaris Zones framework maintains for each zone. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2419 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2420 |
console_str = "" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2421 |
avail = MAX_CONSOLE_BYTES |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2422 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2423 |
# Examine the log files in most-recently modified order, keeping |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2424 |
# track of the size of each file and of how many characters have |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2425 |
# been seen. If there are still characters left to incorporate, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2426 |
# then the contents of the log file in question are prepended to |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2427 |
# the console string built so far. When the number of characters |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2428 |
# available has run out, the last fragment under consideration |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2429 |
# will likely begin within the middle of a line. As such, the |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2430 |
# start of the fragment up to the next newline is thrown away. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2431 |
# The remainder constitutes the start of the resulting console |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2432 |
# output which is then prepended to the console string built so |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2433 |
# far and the result returned. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2434 |
logfile_pattern = '/var/log/zones/%s.console*' % instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2435 |
logfiles = sorted(glob.glob(logfile_pattern), key=os.path.getmtime, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2436 |
reverse=True) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2437 |
for file in logfiles: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2438 |
size = os.path.getsize(file) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2439 |
if size == 0: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2440 |
continue |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2441 |
avail -= size |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2442 |
with open(file, 'r') as log: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2443 |
if avail < 0: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2444 |
(fragment, _) = utils.last_bytes(log, avail + size) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2445 |
remainder = fragment.find('\n') + 1 |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2446 |
console_str = fragment[remainder:] + console_str |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2447 |
break |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2448 |
fragment = '' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2449 |
for line in log.readlines(): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2450 |
fragment += line |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2451 |
console_str = fragment + console_str |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2452 |
return console_str |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2453 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2454 |
def get_console_output(self, context, instance): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2455 |
"""Get console output for an instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2456 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2457 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2458 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2459 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2460 |
return self._get_console_output(instance) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2461 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2462 |
def get_vnc_console(self, context, instance): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2463 |
"""Get connection info for a vnc console. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2464 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2465 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2466 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2467 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2468 |
:returns an instance of console.type.ConsoleVNC |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2469 |
""" |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2470 |
# Do not provide console access prematurely. Zone console access is |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2471 |
# exclusive and zones that are still installing require their console. |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2472 |
# Grabbing the zone console will break installation. |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2473 |
name = instance['name'] |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2474 |
if instance['vm_state'] == vm_states.BUILDING: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2475 |
LOG.info(_("VNC console not available until zone '%s' has " |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2476 |
"completed installation. Try again later.") % name) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2477 |
raise exception.InstanceNotReady(instance_id=instance['uuid']) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2478 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2479 |
if not self._has_vnc_console_service(instance): |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2480 |
LOG.debug(_("Creating zone VNC console SMF service for " |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2481 |
"instance '%s'") % name) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2482 |
self._create_vnc_console_service(instance) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2483 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2484 |
self._enable_vnc_console_service(instance) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2485 |
console_fmri = VNC_CONSOLE_BASE_FMRI + ':' + name |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2486 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2487 |
# The console service sets an SMF instance property for the port |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2488 |
# on which the VNC service is listening. The service needs to be |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2489 |
# refreshed to reflect the current property value |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2490 |
# TODO(npower): investigate using RAD instead of CLI invocation |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2491 |
try: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2492 |
out, err = utils.execute('/usr/sbin/svccfg', '-s', console_fmri, |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2493 |
'refresh') |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2494 |
except processutils.ProcessExecutionError as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2495 |
reason = ex.stderr |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2496 |
LOG.error(_("Unable to refresh zone VNC console SMF service " |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2497 |
"'%s': %s" % (console_fmri, reason))) |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2498 |
raise |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2499 |
|
4553
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
2500 |
host = CONF.vncserver_proxyclient_address |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2501 |
try: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2502 |
out, err = utils.execute('/usr/bin/svcprop', '-p', 'vnc/port', |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2503 |
console_fmri) |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2504 |
port = int(out.strip()) |
4553
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
2505 |
return ctype.ConsoleVNC(host=host, |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2506 |
port=port, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2507 |
internal_access_path=None) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2508 |
except processutils.ProcessExecutionError as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2509 |
reason = ex.stderr |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2510 |
LOG.error(_("Unable to read VNC console port from zone VNC " |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2511 |
"console SMF service '%s': %s" |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2512 |
% (console_fmri, reason))) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2513 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2514 |
def get_spice_console(self, context, instance): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2515 |
"""Get connection info for a spice console. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2516 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2517 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2518 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2519 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2520 |
:returns an instance of console.type.ConsoleSpice |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2521 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2522 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2523 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2524 |
def get_rdp_console(self, context, instance): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2525 |
"""Get connection info for a rdp console. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2526 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2527 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2528 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2529 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2530 |
:returns an instance of console.type.ConsoleRDP |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2531 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2532 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2533 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2534 |
def get_serial_console(self, context, instance): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2535 |
"""Get connection info for a serial console. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2536 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2537 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2538 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2539 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2540 |
:returns an instance of console.type.ConsoleSerial |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2541 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2542 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2543 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2544 |
def _get_zone_diagnostics(self, zone): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2545 |
"""Return data about Solaris Zone diagnostics.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2546 |
if zone.id == -1: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2547 |
return None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2548 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2549 |
diagnostics = {} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2550 |
id = str(zone.id) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2551 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2552 |
kstat_data = self._get_kstat_by_name('zone_caps', 'caps', id, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2553 |
''.join(('lockedmem_zone_', id))) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2554 |
if kstat_data is not None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2555 |
diagnostics['lockedmem'] = kstat_data['usage'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2556 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2557 |
kstat_data = self._get_kstat_by_name('zone_caps', 'caps', id, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2558 |
''.join(('nprocs_zone_', id))) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2559 |
if kstat_data is not None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2560 |
diagnostics['nprocs'] = kstat_data['usage'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2561 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2562 |
kstat_data = self._get_kstat_by_name('zone_caps', 'caps', id, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2563 |
''.join(('swapresv_zone_', id))) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2564 |
if kstat_data is not None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2565 |
diagnostics['swapresv'] = kstat_data['usage'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2566 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2567 |
kstat_data = self._get_kstat_by_name('zones', 'cpu', id, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2568 |
'sys_zone_aggr') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2569 |
if kstat_data is not None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2570 |
for key in kstat_data.keys(): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2571 |
if key not in ('class', 'crtime', 'snaptime'): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2572 |
diagnostics[key] = kstat_data[key] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2573 |
return diagnostics |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2574 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2575 |
def get_diagnostics(self, instance): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2576 |
"""Return data about VM diagnostics. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2577 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2578 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2579 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2580 |
# TODO(Vek): Need to pass context in for access to auth_token |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2581 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2582 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2583 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2584 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2585 |
return self._get_zone_diagnostics(zone) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2586 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2587 |
def get_instance_diagnostics(self, instance): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2588 |
"""Return data about VM diagnostics. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2589 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2590 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2591 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2592 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2593 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2594 |
def get_all_bw_counters(self, instances): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2595 |
"""Return bandwidth usage counters for each interface on each |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2596 |
running VM. |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2597 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2598 |
:param instances: nova.objects.instance.InstanceList |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2599 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2600 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2601 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2602 |
def get_all_volume_usage(self, context, compute_host_bdms): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2603 |
"""Return usage info for volumes attached to vms on |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2604 |
a given host.- |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2605 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2606 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2607 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2608 |
def get_host_ip_addr(self): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2609 |
"""Retrieves the IP address of the dom0 |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2610 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2611 |
# TODO(Vek): Need to pass context in for access to auth_token |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2612 |
return CONF.my_ip |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2613 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2614 |
def attach_volume(self, context, connection_info, instance, mountpoint, |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2615 |
disk_bus=None, device_type=None, encryption=None): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2616 |
"""Attach the disk to the instance at mountpoint using info.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2617 |
# TODO(npower): Apply mountpoint in a meaningful way to the zone |
5191
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2618 |
# For security reasons this is not permitted in a Solaris branded zone. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2619 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2620 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2621 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2622 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2623 |
|
5191
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2624 |
extra_specs = self._get_extra_specs(instance) |
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2625 |
brand = extra_specs.get('zonecfg:brand', ZONE_BRAND_SOLARIS) |
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2626 |
if brand != ZONE_BRAND_SOLARIS_KZ: |
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2627 |
# Only Solaris kernel zones are currently supported. |
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2628 |
reason = (_("'%s' branded zones are not currently supported") |
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2629 |
% brand) |
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2630 |
raise NotImplementedError(reason) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2631 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2632 |
suri = self._suri_from_volume_info(connection_info) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2633 |
|
5949
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2634 |
resource_scope = [zonemgr.Property("storage", suri)] |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2635 |
if connection_info.get('serial') is not None: |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2636 |
volume = self._volume_api.get(context, connection_info['serial']) |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2637 |
if volume['bootable']: |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2638 |
resource_scope.append(zonemgr.Property("bootpri", "1")) |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2639 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2640 |
with ZoneConfig(zone) as zc: |
5949
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2641 |
zc.addresource("device", resource_scope) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2642 |
|
4671
d08190e626f1
20867780 Nova should support LZR for block devices
Drew Fisher <drew.fisher@oracle.com>
parents:
4669
diff
changeset
|
2643 |
# apply the configuration to the running zone |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2644 |
if zone.state == ZONE_STATE_RUNNING: |
5606
005e55ad33d5
22220227 failure to apply zonecfg in attach_volume can leave debris in zonecfg
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5541
diff
changeset
|
2645 |
try: |
005e55ad33d5
22220227 failure to apply zonecfg in attach_volume can leave debris in zonecfg
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5541
diff
changeset
|
2646 |
zone.apply() |
005e55ad33d5
22220227 failure to apply zonecfg in attach_volume can leave debris in zonecfg
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5541
diff
changeset
|
2647 |
except Exception as ex: |
005e55ad33d5
22220227 failure to apply zonecfg in attach_volume can leave debris in zonecfg
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5541
diff
changeset
|
2648 |
reason = zonemgr_strerror(ex) |
005e55ad33d5
22220227 failure to apply zonecfg in attach_volume can leave debris in zonecfg
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5541
diff
changeset
|
2649 |
LOG.error(_("Unable to attach '%s' to instance '%s' via " |
005e55ad33d5
22220227 failure to apply zonecfg in attach_volume can leave debris in zonecfg
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5541
diff
changeset
|
2650 |
"zonemgr(3RAD): %s") % (suri, name, reason)) |
005e55ad33d5
22220227 failure to apply zonecfg in attach_volume can leave debris in zonecfg
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5541
diff
changeset
|
2651 |
with ZoneConfig(zone) as zc: |
5949
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2652 |
zc.removeresources("device", resource_scope) |
5606
005e55ad33d5
22220227 failure to apply zonecfg in attach_volume can leave debris in zonecfg
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5541
diff
changeset
|
2653 |
raise |
4671
d08190e626f1
20867780 Nova should support LZR for block devices
Drew Fisher <drew.fisher@oracle.com>
parents:
4669
diff
changeset
|
2654 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2655 |
def detach_volume(self, connection_info, instance, mountpoint, |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2656 |
encryption=None): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2657 |
"""Detach the disk attached to the instance.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2658 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2659 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2660 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2661 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2662 |
|
5191
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2663 |
extra_specs = self._get_extra_specs(instance) |
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2664 |
brand = extra_specs.get('zonecfg:brand', ZONE_BRAND_SOLARIS) |
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2665 |
if brand != ZONE_BRAND_SOLARIS_KZ: |
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2666 |
# Only Solaris kernel zones are currently supported. |
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2667 |
reason = (_("'%s' branded zones are not currently supported") |
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2668 |
% brand) |
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2669 |
raise NotImplementedError(reason) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2670 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2671 |
suri = self._suri_from_volume_info(connection_info) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2672 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2673 |
# Check if the specific property value exists before attempting removal |
5949
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2674 |
resource = lookup_resource_property_value(zone, "device", "storage", |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2675 |
suri) |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2676 |
if not resource: |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2677 |
LOG.warning(_("Storage resource '%s' is not attached to instance " |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2678 |
"'%s'") % (suri, name)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2679 |
return |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2680 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2681 |
with ZoneConfig(zone) as zc: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2682 |
zc.removeresources("device", [zonemgr.Property("storage", suri)]) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2683 |
|
4671
d08190e626f1
20867780 Nova should support LZR for block devices
Drew Fisher <drew.fisher@oracle.com>
parents:
4669
diff
changeset
|
2684 |
# apply the configuration to the running zone |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2685 |
if zone.state == ZONE_STATE_RUNNING: |
5949
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2686 |
try: |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2687 |
zone.apply() |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2688 |
except: |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2689 |
LOG.error(_("Unable to apply the detach of resource '%s' to " |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2690 |
"running instance '%s' because the resource is " |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2691 |
"most likely in use.") % (suri, name)) |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2692 |
|
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2693 |
# re-add the entry to the zone configuration so that the |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2694 |
# configuration will reflect what is in cinder before we raise |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2695 |
# the exception, therefor failing the detach and leaving the |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2696 |
# volume in-use. |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2697 |
needed_props = ["storage", "bootpri"] |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2698 |
props = filter(lambda prop: prop.name in needed_props, |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2699 |
resource.properties) |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2700 |
with ZoneConfig(zone) as zc: |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2701 |
zc.addresource("device", props) |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2702 |
|
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2703 |
raise |
4671
d08190e626f1
20867780 Nova should support LZR for block devices
Drew Fisher <drew.fisher@oracle.com>
parents:
4669
diff
changeset
|
2704 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2705 |
def swap_volume(self, old_connection_info, new_connection_info, |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2706 |
instance, mountpoint, resize_to): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2707 |
"""Replace the disk attached to the instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2708 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2709 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2710 |
:param resize_to: This parameter is used to indicate the new volume |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2711 |
size when the new volume lager than old volume. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2712 |
And the units is Gigabyte. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2713 |
""" |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2714 |
raise NotImplementedError() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2715 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2716 |
def attach_interface(self, instance, image_meta, vif): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2717 |
"""Attach an interface to the instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2718 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2719 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2720 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2721 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2722 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2723 |
def detach_interface(self, instance, vif): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2724 |
"""Detach an interface from the instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2725 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2726 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2727 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2728 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2729 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2730 |
def _cleanup_migrate_disk(self, context, instance, volume): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2731 |
"""Make a best effort at cleaning up the volume that was created to |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2732 |
hold the new root disk |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2733 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2734 |
:param context: the context for the migration/resize |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2735 |
:param instance: nova.objects.instance.Instance being migrated/resized |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2736 |
:param volume: new volume created by the call to cinder create |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2737 |
""" |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2738 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2739 |
self._volume_api.delete(context, volume['id']) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2740 |
except Exception as err: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2741 |
LOG.error(_("Unable to cleanup the resized volume: %s" % err)) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2742 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2743 |
def migrate_disk_and_power_off(self, context, instance, dest, |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2744 |
flavor, network_info, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2745 |
block_device_info=None, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2746 |
timeout=0, retry_interval=0): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2747 |
"""Transfers the disk of a running instance in multiple phases, turning |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2748 |
off the instance before the end. |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2749 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2750 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2751 |
:param timeout: time to wait for GuestOS to shutdown |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2752 |
:param retry_interval: How often to signal guest while |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2753 |
waiting for it to shutdown |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2754 |
""" |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2755 |
LOG.debug("Starting migrate_disk_and_power_off", instance=instance) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2756 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2757 |
samehost = (dest == self.get_host_ip_addr()) |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2758 |
if samehost: |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2759 |
instance.system_metadata['resize_samehost'] = samehost |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2760 |
|
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2761 |
extra_specs = self._get_extra_specs(instance) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2762 |
brand = extra_specs.get('zonecfg:brand', ZONE_BRAND_SOLARIS) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2763 |
if brand != ZONE_BRAND_SOLARIS_KZ and not samehost: |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2764 |
reason = (_("'%s' branded zones do not currently support resize " |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2765 |
"to a different host.") % brand) |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2766 |
raise exception.MigrationPreCheckError(reason=reason) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2767 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2768 |
if brand != flavor['extra_specs'].get('zonecfg:brand'): |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2769 |
reason = (_("Unable to change brand of zone during resize.")) |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2770 |
raise exception.MigrationPreCheckError(reason=reason) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2771 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2772 |
orgb = instance['root_gb'] |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2773 |
nrgb = flavor.root_gb |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2774 |
if orgb > nrgb: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2775 |
msg = (_("Unable to resize to a smaller boot volume.")) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2776 |
raise exception.ResizeError(reason=msg) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2777 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2778 |
self.power_off(instance, timeout, retry_interval) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2779 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2780 |
disk_info = None |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2781 |
if nrgb > orgb or not samehost: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2782 |
bmap = block_device_info.get('block_device_mapping') |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2783 |
rootmp = instance.root_device_name |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2784 |
for entry in bmap: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2785 |
mountdev = entry['mount_device'].rpartition('/')[2] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2786 |
if mountdev == rootmp: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2787 |
root_ci = entry['connection_info'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2788 |
break |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2789 |
else: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2790 |
# If this is a non-global zone that is on the same host and is |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2791 |
# simply using a dataset, the disk size is purely an OpenStack |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2792 |
# quota. We can continue without doing any disk work. |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2793 |
if samehost and brand == ZONE_BRAND_SOLARIS: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2794 |
return disk_info |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2795 |
else: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2796 |
msg = (_("Cannot find an attached root device.")) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2797 |
raise exception.ResizeError(reason=msg) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2798 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2799 |
if root_ci['driver_volume_type'] == 'iscsi': |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2800 |
volume_id = root_ci['data']['volume_id'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2801 |
else: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2802 |
volume_id = root_ci['serial'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2803 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2804 |
if volume_id is None: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2805 |
msg = (_("Cannot find an attached root device.")) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2806 |
raise exception.ResizeError(reason=msg) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2807 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2808 |
vinfo = self._volume_api.get(context, volume_id) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2809 |
newvolume = self._volume_api.create(context, orgb, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2810 |
vinfo['display_name'] + |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2811 |
'-resized', |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2812 |
vinfo['display_description'], |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2813 |
source_volume=vinfo) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2814 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2815 |
instance.system_metadata['old_instance_volid'] = volume_id |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2816 |
instance.system_metadata['new_instance_volid'] = newvolume['id'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2817 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2818 |
# TODO(npower): Polling is what nova/compute/manager also does when |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2819 |
# creating a new volume, so we do likewise here. |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2820 |
while True: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2821 |
volume = self._volume_api.get(context, newvolume['id']) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2822 |
if volume['status'] != 'creating': |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2823 |
break |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2824 |
greenthread.sleep(1) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2825 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2826 |
if nrgb > orgb: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2827 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2828 |
self._volume_api.extend(context, newvolume['id'], nrgb) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2829 |
except Exception: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2830 |
LOG.error(_("Failed to extend the new volume")) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2831 |
self._cleanup_migrate_disk(context, instance, newvolume) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2832 |
raise |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2833 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2834 |
disk_info = newvolume |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2835 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2836 |
return disk_info |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2837 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2838 |
def snapshot(self, context, instance, image_id, update_task_state): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2839 |
"""Snapshots the specified instance. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2840 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2841 |
:param context: security context |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2842 |
:param instance: nova.objects.instance.Instance |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2843 |
:param image_id: Reference to a pre-created image that will |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2844 |
hold the snapshot. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2845 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2846 |
# Get original base image info |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2847 |
(base_service, base_id) = glance.get_remote_image_service( |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2848 |
context, instance['image_ref']) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2849 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2850 |
base = base_service.show(context, base_id) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2851 |
except exception.ImageNotFound: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2852 |
base = {} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2853 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2854 |
snapshot_service, snapshot_id = glance.get_remote_image_service( |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2855 |
context, image_id) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2856 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2857 |
# Build updated snapshot image metadata |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2858 |
snapshot = snapshot_service.show(context, snapshot_id) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2859 |
metadata = { |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2860 |
'is_public': False, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2861 |
'status': 'active', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2862 |
'name': snapshot['name'], |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2863 |
'properties': { |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2864 |
'image_location': 'snapshot', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2865 |
'image_state': 'available', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2866 |
'owner_id': instance['project_id'], |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2867 |
'instance_uuid': instance['uuid'], |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2868 |
'image_type': snapshot['properties']['image_type'], |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2869 |
} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2870 |
} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2871 |
# Match architecture, hypervisor_type and vm_mode properties to base |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2872 |
# image. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2873 |
for prop in ['architecture', 'hypervisor_type', 'vm_mode']: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2874 |
if prop in base.get('properties', {}): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2875 |
base_prop = base['properties'][prop] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2876 |
metadata['properties'][prop] = base_prop |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2877 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2878 |
# Set generic container and disk formats initially in case the glance |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2879 |
# service rejects Unified Archives (uar) and ZFS in metadata. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2880 |
metadata['container_format'] = 'ovf' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2881 |
metadata['disk_format'] = 'raw' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2882 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2883 |
update_task_state(task_state=task_states.IMAGE_PENDING_UPLOAD) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2884 |
snapshot_directory = CONF.solariszones_snapshots_directory |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2885 |
fileutils.ensure_tree(snapshot_directory) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2886 |
snapshot_name = uuid.uuid4().hex |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2887 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2888 |
with utils.tempdir(dir=snapshot_directory) as tmpdir: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2889 |
out_path = os.path.join(tmpdir, snapshot_name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2890 |
zone_name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2891 |
utils.execute('/usr/sbin/archiveadm', 'create', '--root-only', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2892 |
'-z', zone_name, out_path) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2893 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2894 |
LOG.info(_("Snapshot extracted, beginning image upload"), |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2895 |
instance=instance) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2896 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2897 |
# Upload the archive image to the image service |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2898 |
update_task_state( |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2899 |
task_state=task_states.IMAGE_UPLOADING, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2900 |
expected_state=task_states.IMAGE_PENDING_UPLOAD) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2901 |
with open(out_path, 'r') as image_file: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2902 |
snapshot_service.update(context, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2903 |
image_id, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2904 |
metadata, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2905 |
image_file) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2906 |
LOG.info(_("Snapshot image upload complete"), |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2907 |
instance=instance) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2908 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2909 |
# Try to update the image metadata container and disk |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2910 |
# formats more suitably for a unified archive if the |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2911 |
# glance server recognises them. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2912 |
metadata['container_format'] = 'uar' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2913 |
metadata['disk_format'] = 'zfs' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2914 |
snapshot_service.update(context, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2915 |
image_id, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2916 |
metadata, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2917 |
None) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2918 |
except exception.Invalid: |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2919 |
LOG.warning(_("Image service rejected image metadata " |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2920 |
"container and disk formats 'uar' and " |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2921 |
"'zfs'. Using generic values 'ovf' and " |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2922 |
"'raw' as fallbacks.")) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2923 |
finally: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2924 |
# Delete the snapshot image file source |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2925 |
os.unlink(out_path) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2926 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2927 |
def post_interrupted_snapshot_cleanup(self, context, instance): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2928 |
"""Cleans up any resources left after an interrupted snapshot. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2929 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2930 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2931 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2932 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2933 |
pass |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2934 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2935 |
def _cleanup_finish_migration(self, context, instance, disk_info, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2936 |
network_info, samehost): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2937 |
"""Best effort attempt at cleaning up any additional resources that are |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2938 |
not directly managed by Nova or Cinder so as not to leak these |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2939 |
resources. |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2940 |
""" |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2941 |
if disk_info: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2942 |
self._volume_api.detach(context, disk_info['id']) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2943 |
self._volume_api.delete(context, disk_info['id']) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2944 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2945 |
old_rvid = instance.system_metadata.get('old_instance_volid') |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2946 |
if old_rvid: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2947 |
connector = self.get_volume_connector(instance) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2948 |
connection_info = self._volume_api.initialize_connection( |
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2949 |
context, old_rvid, connector) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2950 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2951 |
new_rvid = instance.system_metadata['new_instance_volid'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2952 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2953 |
rootmp = instance.root_device_name |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2954 |
self._volume_api.attach(context, old_rvid, instance['uuid'], |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2955 |
rootmp) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2956 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2957 |
bdmobj = objects.BlockDeviceMapping() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2958 |
bdm = bdmobj.get_by_volume_id(context, new_rvid) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2959 |
bdm['connection_info'] = jsonutils.dumps(connection_info) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2960 |
bdm['volume_id'] = old_rvid |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2961 |
bdm.save() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2962 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2963 |
del instance.system_metadata['new_instance_volid'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2964 |
del instance.system_metadata['old_instance_volid'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2965 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2966 |
if not samehost: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2967 |
self.destroy(context, instance, network_info) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2968 |
instance['host'] = instance['launched_on'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2969 |
instance['node'] = instance['launched_on'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2970 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2971 |
def finish_migration(self, context, migration, instance, disk_info, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2972 |
network_info, image_meta, resize_instance, |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2973 |
block_device_info=None, power_on=True): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2974 |
"""Completes a resize. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2975 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2976 |
:param context: the context for the migration/resize |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2977 |
:param migration: the migrate/resize information |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2978 |
:param instance: nova.objects.instance.Instance being migrated/resized |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2979 |
:param disk_info: the newly transferred disk information |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2980 |
:param network_info: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2981 |
:py:meth:`~nova.network.manager.NetworkManager.get_instance_nw_info` |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2982 |
:param image_meta: image object returned by nova.image.glance that |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2983 |
defines the image from which this instance |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2984 |
was created |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2985 |
:param resize_instance: True if the instance is being resized, |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2986 |
False otherwise |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2987 |
:param block_device_info: instance volume block device info |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2988 |
:param power_on: True if the instance should be powered on, False |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2989 |
otherwise |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2990 |
""" |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2991 |
if not resize_instance: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2992 |
raise NotImplementedError() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2993 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2994 |
samehost = (migration['dest_node'] == migration['source_node']) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2995 |
if samehost: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2996 |
instance.system_metadata['old_vm_state'] = vm_states.RESIZED |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2997 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2998 |
extra_specs = self._get_extra_specs(instance) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2999 |
brand = extra_specs.get('zonecfg:brand', ZONE_BRAND_SOLARIS) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3000 |
name = instance['name'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3001 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3002 |
if disk_info: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3003 |
bmap = block_device_info.get('block_device_mapping') |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3004 |
rootmp = instance['root_device_name'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3005 |
for entry in bmap: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3006 |
if entry['mount_device'] == rootmp: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3007 |
mount_dev = entry['mount_device'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3008 |
root_ci = entry['connection_info'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3009 |
break |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3010 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3011 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3012 |
if samehost: |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3013 |
cpu = instance.vcpus |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3014 |
mem = instance.memory_mb |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3015 |
self._set_num_cpu(name, cpu, brand) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3016 |
self._set_memory_cap(name, mem, brand) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3017 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3018 |
# Add the new disk to the volume if the size of the disk |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3019 |
# changed |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3020 |
if disk_info: |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3021 |
rgb = instance.root_gb |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3022 |
self._resize_disk_migration(context, instance, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3023 |
root_ci['serial'], |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3024 |
disk_info['id'], |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3025 |
rgb, mount_dev) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3026 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3027 |
else: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3028 |
# No need to check disk_info here, because when not on the |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3029 |
# same host a disk_info is always passed in. |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3030 |
mount_dev = 'c1d0' |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3031 |
root_serial = root_ci['serial'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3032 |
connection_info = self._resize_disk_migration(context, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3033 |
instance, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3034 |
root_serial, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3035 |
disk_info['id'], |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3036 |
0, mount_dev, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3037 |
samehost) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3038 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3039 |
self._create_config(context, instance, network_info, |
5436
2c7413fb2a81
22691630 attempting to resize or evacuate with a network is broken
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5405
diff
changeset
|
3040 |
connection_info, None) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3041 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3042 |
zone = self._get_zone_by_name(name) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3043 |
if zone is None: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3044 |
raise exception.InstanceNotFound(instance_id=name) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3045 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3046 |
zone.attach(['-x', 'initialize-hostdata']) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3047 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3048 |
bmap = block_device_info.get('block_device_mapping') |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3049 |
for entry in bmap: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3050 |
if entry['mount_device'] != rootmp: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3051 |
self.attach_volume(context, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3052 |
entry['connection_info'], instance, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3053 |
entry['mount_device']) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3054 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3055 |
if power_on: |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
3056 |
self._power_on(instance, network_info) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3057 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3058 |
if brand == ZONE_BRAND_SOLARIS: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3059 |
return |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3060 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3061 |
# Toggle the autoexpand to extend the size of the rpool. |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3062 |
# We need to sleep for a few seconds to make sure the zone |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3063 |
# is in a state to accept the toggle. Once bugs are fixed |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3064 |
# around the autoexpand and the toggle is no longer needed |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3065 |
# or zone.boot() returns only after the zone is ready we |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3066 |
# can remove this hack. |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3067 |
greenthread.sleep(15) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3068 |
out, err = utils.execute('/usr/sbin/zlogin', '-S', name, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3069 |
'/usr/sbin/zpool', 'set', |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3070 |
'autoexpand=off', 'rpool') |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3071 |
out, err = utils.execute('/usr/sbin/zlogin', '-S', name, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3072 |
'/usr/sbin/zpool', 'set', |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3073 |
'autoexpand=on', 'rpool') |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3074 |
except Exception: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3075 |
# Attempt to cleanup the new zone and new volume to at least |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3076 |
# give the user a chance to recover without too many hoops |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3077 |
self._cleanup_finish_migration(context, instance, disk_info, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3078 |
network_info, samehost) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3079 |
raise |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3080 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3081 |
def confirm_migration(self, context, migration, instance, network_info): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3082 |
"""Confirms a resize, destroying the source VM. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3083 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3084 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3085 |
""" |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3086 |
samehost = (migration['dest_host'] == self.get_host_ip_addr()) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3087 |
old_rvid = instance.system_metadata.get('old_instance_volid') |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3088 |
new_rvid = instance.system_metadata.get('new_instance_volid') |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3089 |
if new_rvid and old_rvid: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3090 |
new_vname = instance['display_name'] + "-" + self._rootzpool_suffix |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3091 |
del instance.system_metadata['old_instance_volid'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3092 |
del instance.system_metadata['new_instance_volid'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3093 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3094 |
self._volume_api.delete(context, old_rvid) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3095 |
self._volume_api.update(context, new_rvid, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3096 |
{'display_name': new_vname}) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3097 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3098 |
if not samehost: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3099 |
self.destroy(context, instance, network_info) |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3100 |
else: |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3101 |
del instance.system_metadata['resize_samehost'] |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3102 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3103 |
def _resize_disk_migration(self, context, instance, configured, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3104 |
replacement, newvolumesz, mountdev, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3105 |
samehost=True): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3106 |
"""Handles the zone root volume switch-over or simply |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3107 |
initializing the connection for the new zone if not resizing to the |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3108 |
same host |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3109 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3110 |
:param context: the context for the _resize_disk_migration |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3111 |
:param instance: nova.objects.instance.Instance being resized |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3112 |
:param configured: id of the current configured volume |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3113 |
:param replacement: id of the new volume |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3114 |
:param newvolumesz: size of the new volume |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3115 |
:param mountdev: the mount point of the device |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3116 |
:param samehost: is the resize happening on the same host |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3117 |
""" |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3118 |
connector = self.get_volume_connector(instance) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3119 |
connection_info = self._volume_api.initialize_connection(context, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3120 |
replacement, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3121 |
connector) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3122 |
connection_info['serial'] = replacement |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3123 |
rootmp = instance.root_device_name |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3124 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3125 |
if samehost: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3126 |
name = instance['name'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3127 |
zone = self._get_zone_by_name(name) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3128 |
if zone is None: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3129 |
raise exception.InstanceNotFound(instance_id=name) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3130 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3131 |
# Need to detach the zone and re-attach the zone if this is a |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3132 |
# non-global zone so that the update of the rootzpool resource does |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3133 |
# not fail. |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3134 |
if zone.brand == ZONE_BRAND_SOLARIS: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3135 |
zone.detach() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3136 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3137 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3138 |
self._set_boot_device(name, connection_info, zone.brand) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3139 |
finally: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3140 |
if zone.brand == ZONE_BRAND_SOLARIS: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3141 |
zone.attach() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3142 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3143 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3144 |
self._volume_api.detach(context, configured) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3145 |
except Exception: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3146 |
LOG.error(_("Failed to detach the volume")) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3147 |
raise |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3148 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3149 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3150 |
self._volume_api.attach(context, replacement, instance['uuid'], |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3151 |
rootmp) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3152 |
except Exception: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3153 |
LOG.error(_("Failed to attach the volume")) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3154 |
raise |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3155 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3156 |
bdmobj = objects.BlockDeviceMapping() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3157 |
bdm = bdmobj.get_by_volume_id(context, configured) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3158 |
bdm['connection_info'] = jsonutils.dumps(connection_info) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3159 |
bdm['volume_id'] = replacement |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3160 |
bdm.save() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3161 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3162 |
if not samehost: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3163 |
return connection_info |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3164 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3165 |
def finish_revert_migration(self, context, instance, network_info, |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3166 |
block_device_info=None, power_on=True): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3167 |
"""Finish reverting a resize. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3168 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3169 |
:param context: the context for the finish_revert_migration |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3170 |
:param instance: nova.objects.instance.Instance being migrated/resized |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3171 |
:param network_info: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3172 |
:py:meth:`~nova.network.manager.NetworkManager.get_instance_nw_info` |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3173 |
:param block_device_info: instance volume block device info |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3174 |
:param power_on: True if the instance should be powered on, False |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3175 |
otherwise |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3176 |
""" |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3177 |
# If this is not a samehost migration then we need to re-attach the |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3178 |
# original volume to the instance. Otherwise we need to update the |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3179 |
# original zone configuration. |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3180 |
samehost = instance.system_metadata.get('resize_samehost') |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3181 |
if samehost: |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3182 |
self._samehost_revert_resize(context, instance, network_info, |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3183 |
block_device_info) |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3184 |
del instance.system_metadata['resize_samehost'] |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3185 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3186 |
old_rvid = instance.system_metadata.get('old_instance_volid') |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3187 |
if old_rvid: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3188 |
connector = self.get_volume_connector(instance) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3189 |
connection_info = self._volume_api.initialize_connection(context, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3190 |
old_rvid, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3191 |
connector) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3192 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3193 |
new_rvid = instance.system_metadata['new_instance_volid'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3194 |
self._volume_api.detach(context, new_rvid) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3195 |
self._volume_api.delete(context, new_rvid) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3196 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3197 |
rootmp = instance.root_device_name |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3198 |
self._volume_api.attach(context, old_rvid, instance['uuid'], |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3199 |
rootmp) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3200 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3201 |
bdmobj = objects.BlockDeviceMapping() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3202 |
bdm = bdmobj.get_by_volume_id(context, new_rvid) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3203 |
bdm['connection_info'] = jsonutils.dumps(connection_info) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3204 |
bdm['volume_id'] = old_rvid |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3205 |
bdm.save() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3206 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3207 |
del instance.system_metadata['new_instance_volid'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3208 |
del instance.system_metadata['old_instance_volid'] |
5252
947514442d05
22513201 nova resize revert will fail if there are volumes attached
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5196
diff
changeset
|
3209 |
else: |
5608
3a50019e38cf
22750945 Revert resize same host branded zones results in error status
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5607
diff
changeset
|
3210 |
new_rvid = instance.system_metadata.get('new_instance_volid') |
5252
947514442d05
22513201 nova resize revert will fail if there are volumes attached
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5196
diff
changeset
|
3211 |
if new_rvid: |
947514442d05
22513201 nova resize revert will fail if there are volumes attached
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5196
diff
changeset
|
3212 |
del instance.system_metadata['new_instance_volid'] |
947514442d05
22513201 nova resize revert will fail if there are volumes attached
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5196
diff
changeset
|
3213 |
self._volume_api.delete(context, new_rvid) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3214 |
|
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
3215 |
self._power_on(instance, network_info) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3216 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3217 |
def pause(self, instance): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3218 |
"""Pause the specified instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3219 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3220 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3221 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3222 |
# TODO(Vek): Need to pass context in for access to auth_token |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3223 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3224 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3225 |
def unpause(self, instance): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3226 |
"""Unpause paused VM instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3227 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3228 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3229 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3230 |
# TODO(Vek): Need to pass context in for access to auth_token |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3231 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3232 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3233 |
def suspend(self, context, instance): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3234 |
"""suspend the specified instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3235 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3236 |
:param context: the context for the suspend |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3237 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3238 |
""" |
4781
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3239 |
name = instance['name'] |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3240 |
zone = self._get_zone_by_name(name) |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3241 |
if zone is None: |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3242 |
raise exception.InstanceNotFound(instance_id=name) |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3243 |
|
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3244 |
if zone.brand != ZONE_BRAND_SOLARIS_KZ: |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3245 |
# Only Solaris kernel zones are currently supported. |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3246 |
reason = (_("'%s' branded zones do not currently support " |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3247 |
"suspend. Use 'nova reset-state --active %s' " |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3248 |
"to reset instance state back to 'active'.") |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3249 |
% (zone.brand, instance['display_name'])) |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3250 |
raise exception.InstanceSuspendFailure(reason=reason) |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3251 |
|
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3252 |
if self._get_state(zone) != power_state.RUNNING: |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3253 |
reason = (_("Instance '%s' is not running.") % name) |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3254 |
raise exception.InstanceSuspendFailure(reason=reason) |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3255 |
|
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3256 |
try: |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3257 |
new_path = os.path.join(CONF.zones_suspend_path, '%{zonename}') |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3258 |
if not lookup_resource(zone, 'suspend'): |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3259 |
# add suspend if not configured |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3260 |
self._set_suspend(instance) |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3261 |
elif lookup_resource_property(zone, 'suspend', 'path') != new_path: |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3262 |
# replace the old suspend resource with the new one |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3263 |
with ZoneConfig(zone) as zc: |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3264 |
zc.removeresources('suspend') |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3265 |
self._set_suspend(instance) |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3266 |
|
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3267 |
zone.suspend() |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
3268 |
self._unplug_vifs(instance) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
3269 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
3270 |
reason = zonemgr_strerror(ex) |
4781
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3271 |
LOG.error(_("Unable to suspend instance '%s' via " |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3272 |
"zonemgr(3RAD): %s") % (name, reason)) |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3273 |
raise exception.InstanceSuspendFailure(reason=reason) |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3274 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3275 |
def resume(self, context, instance, network_info, block_device_info=None): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3276 |
"""resume the specified instance. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3277 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3278 |
:param context: the context for the resume |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3279 |
:param instance: nova.objects.instance.Instance being resumed |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3280 |
:param network_info: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3281 |
:py:meth:`~nova.network.manager.NetworkManager.get_instance_nw_info` |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3282 |
:param block_device_info: instance volume block device info |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3283 |
""" |
4781
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3284 |
name = instance['name'] |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3285 |
zone = self._get_zone_by_name(name) |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3286 |
if zone is None: |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3287 |
raise exception.InstanceNotFound(instance_id=name) |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3288 |
|
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3289 |
if zone.brand != ZONE_BRAND_SOLARIS_KZ: |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3290 |
# Only Solaris kernel zones are currently supported. |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3291 |
reason = (_("'%s' branded zones do not currently support " |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3292 |
"resume.") % zone.brand) |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3293 |
raise exception.InstanceResumeFailure(reason=reason) |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3294 |
|
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3295 |
# check that the instance is suspended |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3296 |
if self._get_state(zone) != power_state.SHUTDOWN: |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3297 |
reason = (_("Instance '%s' is not suspended.") % name) |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3298 |
raise exception.InstanceResumeFailure(reason=reason) |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3299 |
|
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3300 |
try: |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3301 |
zone.boot() |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
3302 |
self._plug_vifs(instance, network_info) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
3303 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
3304 |
reason = zonemgr_strerror(ex) |
4781
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3305 |
LOG.error(_("Unable to resume instance '%s' via zonemgr(3RAD): %s") |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3306 |
% (name, reason)) |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3307 |
raise exception.InstanceResumeFailure(reason=reason) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3308 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3309 |
def resume_state_on_host_boot(self, context, instance, network_info, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3310 |
block_device_info=None): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3311 |
"""resume guest state when a host is booted. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3312 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3313 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3314 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3315 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3316 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3317 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3318 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3319 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3320 |
# TODO(dcomay): Should reconcile with value of zone's autoboot |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3321 |
# property. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3322 |
if self._get_state(zone) not in (power_state.CRASHED, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3323 |
power_state.SHUTDOWN): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3324 |
return |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3325 |
|
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
3326 |
self._power_on(instance, network_info) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3327 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3328 |
def rescue(self, context, instance, network_info, image_meta, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3329 |
rescue_password): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3330 |
"""Rescue the specified instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3331 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3332 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3333 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3334 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3335 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3336 |
def set_bootable(self, instance, is_bootable): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3337 |
"""Set the ability to power on/off an instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3338 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3339 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3340 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3341 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3342 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3343 |
def unrescue(self, instance, network_info): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3344 |
"""Unrescue the specified instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3345 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3346 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3347 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3348 |
# TODO(Vek): Need to pass context in for access to auth_token |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3349 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3350 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3351 |
def power_off(self, instance, timeout=0, retry_interval=0): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3352 |
"""Power off the specified instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3353 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3354 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3355 |
:param timeout: time to wait for GuestOS to shutdown |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3356 |
:param retry_interval: How often to signal guest while |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3357 |
waiting for it to shutdown |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3358 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3359 |
self._power_off(instance, 'SOFT') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3360 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3361 |
def power_on(self, context, instance, network_info, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3362 |
block_device_info=None): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3363 |
"""Power on the specified instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3364 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3365 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3366 |
""" |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
3367 |
self._power_on(instance, network_info) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3368 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3369 |
def soft_delete(self, instance): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3370 |
"""Soft delete the specified instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3371 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3372 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3373 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3374 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3375 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3376 |
def restore(self, instance): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3377 |
"""Restore the specified instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3378 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3379 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3380 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3381 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3382 |
|
1840
bfe6a6253fcd
18617606 local_gb is 0 and free_disk_fb is negative in output of nova hypervisor_show
Strony <strony.zhang@oracle.com>
parents:
1760
diff
changeset
|
3383 |
def _get_zpool_property(self, prop, zpool): |
bfe6a6253fcd
18617606 local_gb is 0 and free_disk_fb is negative in output of nova hypervisor_show
Strony <strony.zhang@oracle.com>
parents:
1760
diff
changeset
|
3384 |
"""Get the value of property from the zpool.""" |
bfe6a6253fcd
18617606 local_gb is 0 and free_disk_fb is negative in output of nova hypervisor_show
Strony <strony.zhang@oracle.com>
parents:
1760
diff
changeset
|
3385 |
try: |
bfe6a6253fcd
18617606 local_gb is 0 and free_disk_fb is negative in output of nova hypervisor_show
Strony <strony.zhang@oracle.com>
parents:
1760
diff
changeset
|
3386 |
value = None |
bfe6a6253fcd
18617606 local_gb is 0 and free_disk_fb is negative in output of nova hypervisor_show
Strony <strony.zhang@oracle.com>
parents:
1760
diff
changeset
|
3387 |
(out, _err) = utils.execute('/usr/sbin/zpool', 'get', prop, zpool) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
3388 |
except processutils.ProcessExecutionError as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
3389 |
reason = ex.stderr |
1840
bfe6a6253fcd
18617606 local_gb is 0 and free_disk_fb is negative in output of nova hypervisor_show
Strony <strony.zhang@oracle.com>
parents:
1760
diff
changeset
|
3390 |
LOG.error(_("Failed to get property '%s' from zpool '%s': %s") |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
3391 |
% (prop, zpool, reason)) |
1840
bfe6a6253fcd
18617606 local_gb is 0 and free_disk_fb is negative in output of nova hypervisor_show
Strony <strony.zhang@oracle.com>
parents:
1760
diff
changeset
|
3392 |
return value |
bfe6a6253fcd
18617606 local_gb is 0 and free_disk_fb is negative in output of nova hypervisor_show
Strony <strony.zhang@oracle.com>
parents:
1760
diff
changeset
|
3393 |
|
bfe6a6253fcd
18617606 local_gb is 0 and free_disk_fb is negative in output of nova hypervisor_show
Strony <strony.zhang@oracle.com>
parents:
1760
diff
changeset
|
3394 |
zpool_prop = out.splitlines()[1].split() |
bfe6a6253fcd
18617606 local_gb is 0 and free_disk_fb is negative in output of nova hypervisor_show
Strony <strony.zhang@oracle.com>
parents:
1760
diff
changeset
|
3395 |
if zpool_prop[1] == prop: |
bfe6a6253fcd
18617606 local_gb is 0 and free_disk_fb is negative in output of nova hypervisor_show
Strony <strony.zhang@oracle.com>
parents:
1760
diff
changeset
|
3396 |
value = zpool_prop[2] |
bfe6a6253fcd
18617606 local_gb is 0 and free_disk_fb is negative in output of nova hypervisor_show
Strony <strony.zhang@oracle.com>
parents:
1760
diff
changeset
|
3397 |
return value |
bfe6a6253fcd
18617606 local_gb is 0 and free_disk_fb is negative in output of nova hypervisor_show
Strony <strony.zhang@oracle.com>
parents:
1760
diff
changeset
|
3398 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3399 |
def _update_host_stats(self): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3400 |
"""Update currently known host stats.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3401 |
host_stats = {} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3402 |
host_stats['vcpus'] = os.sysconf('SC_NPROCESSORS_ONLN') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3403 |
pages = os.sysconf('SC_PHYS_PAGES') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3404 |
host_stats['memory_mb'] = self._pages_to_kb(pages) / 1024 |
1840
bfe6a6253fcd
18617606 local_gb is 0 and free_disk_fb is negative in output of nova hypervisor_show
Strony <strony.zhang@oracle.com>
parents:
1760
diff
changeset
|
3405 |
|
bfe6a6253fcd
18617606 local_gb is 0 and free_disk_fb is negative in output of nova hypervisor_show
Strony <strony.zhang@oracle.com>
parents:
1760
diff
changeset
|
3406 |
out, err = utils.execute('/usr/sbin/zfs', 'list', '-Ho', 'name', '/') |
bfe6a6253fcd
18617606 local_gb is 0 and free_disk_fb is negative in output of nova hypervisor_show
Strony <strony.zhang@oracle.com>
parents:
1760
diff
changeset
|
3407 |
root_zpool = out.split('/')[0] |
bfe6a6253fcd
18617606 local_gb is 0 and free_disk_fb is negative in output of nova hypervisor_show
Strony <strony.zhang@oracle.com>
parents:
1760
diff
changeset
|
3408 |
size = self._get_zpool_property('size', root_zpool) |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3409 |
if size is not None: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3410 |
host_stats['local_gb'] = Size(size).get(Size.gb_units) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3411 |
else: |
1840
bfe6a6253fcd
18617606 local_gb is 0 and free_disk_fb is negative in output of nova hypervisor_show
Strony <strony.zhang@oracle.com>
parents:
1760
diff
changeset
|
3412 |
host_stats['local_gb'] = 0 |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3413 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3414 |
# Account for any existing processor sets by looking at the the |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3415 |
# number of CPUs not assigned to any processor sets. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3416 |
kstat_data = self._get_kstat_by_name('misc', 'unix', '0', 'pset') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3417 |
if kstat_data is not None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3418 |
host_stats['vcpus_used'] = \ |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3419 |
host_stats['vcpus'] - kstat_data['ncpus'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3420 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3421 |
host_stats['vcpus_used'] = 0 |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3422 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3423 |
# Subtract the number of free pages from the total to get the |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3424 |
# used. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3425 |
kstat_data = self._get_kstat_by_name('pages', 'unix', '0', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3426 |
'system_pages') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3427 |
if kstat_data is not None: |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3428 |
free_ram_mb = self._pages_to_kb(kstat_data['freemem']) / 1024 |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3429 |
host_stats['memory_mb_used'] = \ |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3430 |
host_stats['memory_mb'] - free_ram_mb |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3431 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3432 |
host_stats['memory_mb_used'] = 0 |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3433 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3434 |
free = self._get_zpool_property('free', root_zpool) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3435 |
if free is not None: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3436 |
free_disk_gb = Size(free).get(Size.gb_units) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3437 |
else: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3438 |
free_disk_gb = 0 |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3439 |
host_stats['local_gb_used'] = host_stats['local_gb'] - free_disk_gb |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3440 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3441 |
host_stats['hypervisor_type'] = 'solariszones' |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3442 |
host_stats['hypervisor_version'] = \ |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3443 |
utils.convert_version_to_int(HYPERVISOR_VERSION) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3444 |
host_stats['hypervisor_hostname'] = self._uname[1] |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3445 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3446 |
if self._uname[4] == 'i86pc': |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3447 |
architecture = 'x86_64' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3448 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3449 |
architecture = 'sparc64' |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3450 |
cpu_info = { |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3451 |
'arch': architecture |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3452 |
} |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3453 |
host_stats['cpu_info'] = jsonutils.dumps(cpu_info) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3454 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3455 |
host_stats['disk_available_least'] = 0 |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3456 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3457 |
supported_instances = [ |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3458 |
(architecture, 'solariszones', 'solariszones') |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3459 |
] |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3460 |
host_stats['supported_instances'] = \ |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3461 |
jsonutils.dumps(supported_instances) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3462 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3463 |
self._host_stats = host_stats |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3464 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3465 |
def get_available_resource(self, nodename): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3466 |
"""Retrieve resource information. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3467 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3468 |
This method is called when nova-compute launches, and |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3469 |
as part of a periodic task that records the results in the DB. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3470 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3471 |
:param nodename: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3472 |
node which the caller want to get resources from |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3473 |
a driver that manages only one node can safely ignore this |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3474 |
:returns: Dictionary describing resources |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3475 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3476 |
self._update_host_stats() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3477 |
host_stats = self._host_stats |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3478 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3479 |
resources = {} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3480 |
resources['vcpus'] = host_stats['vcpus'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3481 |
resources['memory_mb'] = host_stats['memory_mb'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3482 |
resources['local_gb'] = host_stats['local_gb'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3483 |
resources['vcpus_used'] = host_stats['vcpus_used'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3484 |
resources['memory_mb_used'] = host_stats['memory_mb_used'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3485 |
resources['local_gb_used'] = host_stats['local_gb_used'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3486 |
resources['hypervisor_type'] = host_stats['hypervisor_type'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3487 |
resources['hypervisor_version'] = host_stats['hypervisor_version'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3488 |
resources['hypervisor_hostname'] = host_stats['hypervisor_hostname'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3489 |
resources['cpu_info'] = host_stats['cpu_info'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3490 |
resources['disk_available_least'] = host_stats['disk_available_least'] |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3491 |
resources['supported_instances'] = host_stats['supported_instances'] |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3492 |
return resources |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3493 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3494 |
def pre_live_migration(self, context, instance, block_device_info, |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3495 |
network_info, disk_info, migrate_data=None): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3496 |
"""Prepare an instance for live migration |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3497 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3498 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3499 |
:param instance: nova.objects.instance.Instance object |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3500 |
:param block_device_info: instance block device information |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3501 |
:param network_info: instance network information |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3502 |
:param disk_info: instance disk information |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3503 |
:param migrate_data: implementation specific data dict. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3504 |
""" |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3505 |
return {} |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3506 |
|
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3507 |
def _live_migration(self, name, dest, dry_run=False): |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3508 |
"""Live migration of a Solaris kernel zone to another host.""" |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3509 |
zone = self._get_zone_by_name(name) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3510 |
if zone is None: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3511 |
raise exception.InstanceNotFound(instance_id=name) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3512 |
|
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3513 |
options = [] |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3514 |
live_migration_cipher = CONF.live_migration_cipher |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3515 |
if live_migration_cipher is not None: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3516 |
options.extend(['-c', live_migration_cipher]) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3517 |
if dry_run: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3518 |
options.append('-nq') |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3519 |
options.append('ssh://nova@' + dest) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3520 |
zone.migrate(options) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3521 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3522 |
def live_migration(self, context, instance, dest, |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3523 |
post_method, recover_method, block_migration=False, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3524 |
migrate_data=None): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3525 |
"""Live migration of an instance to another host. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3526 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3527 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3528 |
:param instance: |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3529 |
nova.db.sqlalchemy.models.Instance object |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3530 |
instance object that is migrated. |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3531 |
:param dest: destination host |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3532 |
:param post_method: |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3533 |
post operation method. |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3534 |
expected nova.compute.manager._post_live_migration. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3535 |
:param recover_method: |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3536 |
recovery method when any exception occurs. |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3537 |
expected nova.compute.manager._rollback_live_migration. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3538 |
:param block_migration: if true, migrate VM disk. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3539 |
:param migrate_data: implementation specific params. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3540 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3541 |
""" |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3542 |
name = instance['name'] |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3543 |
try: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3544 |
self._live_migration(name, dest, dry_run=False) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3545 |
except Exception as ex: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3546 |
with excutils.save_and_reraise_exception(): |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
3547 |
reason = zonemgr_strerror(ex) |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3548 |
LOG.error(_("Unable to live migrate instance '%s' to host " |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3549 |
"'%s' via zonemgr(3RAD): %s") |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
3550 |
% (name, dest, reason)) |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3551 |
recover_method(context, instance, dest, block_migration) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3552 |
|
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3553 |
post_method(context, instance, dest, block_migration, migrate_data) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3554 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3555 |
def rollback_live_migration_at_destination(self, context, instance, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3556 |
network_info, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3557 |
block_device_info, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3558 |
destroy_disks=True, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3559 |
migrate_data=None): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3560 |
"""Clean up destination node after a failed live migration. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3561 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3562 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3563 |
:param instance: instance object that was being migrated |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3564 |
:param network_info: instance network information |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3565 |
:param block_device_info: instance block device information |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3566 |
:param destroy_disks: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3567 |
if true, destroy disks at destination during cleanup |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3568 |
:param migrate_data: implementation specific params |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3569 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3570 |
""" |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3571 |
pass |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3572 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3573 |
def post_live_migration(self, context, instance, block_device_info, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3574 |
migrate_data=None): |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3575 |
"""Post operation of live migration at source host. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3576 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3577 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3578 |
:instance: instance object that was migrated |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3579 |
:block_device_info: instance block device information |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3580 |
:param migrate_data: if not None, it is a dict which has data |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3581 |
""" |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3582 |
try: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3583 |
# These methods log if problems occur so no need to double log |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3584 |
# here. Just catch any stray exceptions and allow destroy to |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3585 |
# proceed. |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3586 |
if self._has_vnc_console_service(instance): |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3587 |
self._disable_vnc_console_service(instance) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3588 |
self._delete_vnc_console_service(instance) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3589 |
except Exception: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3590 |
pass |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3591 |
|
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3592 |
name = instance['name'] |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3593 |
zone = self._get_zone_by_name(name) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3594 |
# If instance cannot be found, just return. |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3595 |
if zone is None: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3596 |
LOG.warning(_("Unable to find instance '%s' via zonemgr(3RAD)") |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3597 |
% name) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3598 |
return |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3599 |
|
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3600 |
try: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3601 |
self._delete_config(instance) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3602 |
except Exception as ex: |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
3603 |
reason = zonemgr_strerror(ex) |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3604 |
LOG.error(_("Unable to delete configuration for instance '%s' via " |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
3605 |
"zonemgr(3RAD): %s") % (name, reason)) |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3606 |
raise |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3607 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3608 |
def post_live_migration_at_source(self, context, instance, network_info): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3609 |
"""Unplug VIFs from networks at source. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3610 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3611 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3612 |
:param instance: instance object reference |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3613 |
:param network_info: instance network information |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3614 |
""" |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
3615 |
self._unplug_vifs(instance) |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3616 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3617 |
def post_live_migration_at_destination(self, context, instance, |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3618 |
network_info, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3619 |
block_migration=False, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3620 |
block_device_info=None): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3621 |
"""Post operation of live migration at destination host. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3622 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3623 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3624 |
:param instance: instance object that is migrated |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3625 |
:param network_info: instance network information |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3626 |
:param block_migration: if true, post operation of block_migration. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3627 |
""" |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
3628 |
self._plug_vifs(instance, network_info) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3629 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3630 |
def check_instance_shared_storage_local(self, context, instance): |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3631 |
"""Check if instance files located on shared storage. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3632 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3633 |
This runs check on the destination host, and then calls |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3634 |
back to the source host to check the results. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3635 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3636 |
:param context: security context |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3637 |
:param instance: nova.objects.instance.Instance object |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3638 |
""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3639 |
raise NotImplementedError() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3640 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3641 |
def check_instance_shared_storage_remote(self, context, data): |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3642 |
"""Check if instance files located on shared storage. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3643 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3644 |
:param context: security context |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3645 |
:param data: result of check_instance_shared_storage_local |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3646 |
""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3647 |
raise NotImplementedError() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3648 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3649 |
def check_instance_shared_storage_cleanup(self, context, data): |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3650 |
"""Do cleanup on host after check_instance_shared_storage calls |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3651 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3652 |
:param context: security context |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3653 |
:param data: result of check_instance_shared_storage_local |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3654 |
""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3655 |
pass |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3656 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3657 |
def check_can_live_migrate_destination(self, context, instance, |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3658 |
src_compute_info, dst_compute_info, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3659 |
block_migration=False, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3660 |
disk_over_commit=False): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3661 |
"""Check if it is possible to execute live migration. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3662 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3663 |
This runs checks on the destination host, and then calls |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3664 |
back to the source host to check the results. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3665 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3666 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3667 |
:param instance: nova.db.sqlalchemy.models.Instance |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3668 |
:param src_compute_info: Info about the sending machine |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3669 |
:param dst_compute_info: Info about the receiving machine |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3670 |
:param block_migration: if true, prepare for block migration |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3671 |
:param disk_over_commit: if true, allow disk over commit |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3672 |
:returns: a dict containing migration info (hypervisor-dependent) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3673 |
""" |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3674 |
src_cpu_info = jsonutils.loads(src_compute_info['cpu_info']) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3675 |
src_cpu_arch = src_cpu_info['arch'] |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3676 |
dst_cpu_info = jsonutils.loads(dst_compute_info['cpu_info']) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3677 |
dst_cpu_arch = dst_cpu_info['arch'] |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3678 |
if src_cpu_arch != dst_cpu_arch: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3679 |
reason = (_("CPU architectures between source host '%s' (%s) and " |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3680 |
"destination host '%s' (%s) are incompatible.") |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3681 |
% (src_compute_info['hypervisor_hostname'], src_cpu_arch, |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3682 |
dst_compute_info['hypervisor_hostname'], |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3683 |
dst_cpu_arch)) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3684 |
raise exception.MigrationPreCheckError(reason=reason) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3685 |
|
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3686 |
extra_specs = self._get_extra_specs(instance) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3687 |
brand = extra_specs.get('zonecfg:brand', ZONE_BRAND_SOLARIS) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3688 |
if brand != ZONE_BRAND_SOLARIS_KZ: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3689 |
# Only Solaris kernel zones are currently supported. |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3690 |
reason = (_("'%s' branded zones do not currently support live " |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3691 |
"migration.") % brand) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3692 |
raise exception.MigrationPreCheckError(reason=reason) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3693 |
|
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3694 |
if block_migration: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3695 |
reason = (_('Block migration is not currently supported.')) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3696 |
raise exception.MigrationPreCheckError(reason=reason) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3697 |
if disk_over_commit: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3698 |
reason = (_('Disk overcommit is not currently supported.')) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3699 |
raise exception.MigrationPreCheckError(reason=reason) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3700 |
|
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3701 |
dest_check_data = { |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3702 |
'hypervisor_hostname': dst_compute_info['hypervisor_hostname'] |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3703 |
} |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3704 |
return dest_check_data |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3705 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3706 |
def check_can_live_migrate_destination_cleanup(self, context, |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3707 |
dest_check_data): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3708 |
"""Do required cleanup on dest host after check_can_live_migrate calls |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3709 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3710 |
:param context: security context |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3711 |
:param dest_check_data: result of check_can_live_migrate_destination |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3712 |
""" |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3713 |
pass |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3714 |
|
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3715 |
def _check_local_volumes_present(self, block_device_info): |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3716 |
"""Check if local volumes are attached to the instance.""" |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3717 |
bmap = block_device_info.get('block_device_mapping') |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3718 |
for entry in bmap: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3719 |
connection_info = entry['connection_info'] |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3720 |
driver_type = connection_info['driver_volume_type'] |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3721 |
if driver_type == 'local': |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3722 |
reason = (_("Instances with attached '%s' volumes are not " |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3723 |
"currently supported.") % driver_type) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3724 |
raise exception.MigrationPreCheckError(reason=reason) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3725 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3726 |
def check_can_live_migrate_source(self, context, instance, |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3727 |
dest_check_data, block_device_info=None): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3728 |
"""Check if it is possible to execute live migration. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3729 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3730 |
This checks if the live migration can succeed, based on the |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3731 |
results from check_can_live_migrate_destination. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3732 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3733 |
:param context: security context |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3734 |
:param instance: nova.db.sqlalchemy.models.Instance |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3735 |
:param dest_check_data: result of check_can_live_migrate_destination |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3736 |
:param block_device_info: result of _get_instance_block_device_info |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3737 |
:returns: a dict containing migration info (hypervisor-dependent) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3738 |
""" |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3739 |
self._check_local_volumes_present(block_device_info) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3740 |
name = instance['name'] |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3741 |
dest = dest_check_data['hypervisor_hostname'] |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3742 |
try: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3743 |
self._live_migration(name, dest, dry_run=True) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3744 |
except Exception as ex: |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
3745 |
reason = zonemgr_strerror(ex) |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
3746 |
raise exception.MigrationPreCheckError(reason=reason) |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3747 |
return dest_check_data |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3748 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3749 |
def get_instance_disk_info(self, instance, |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3750 |
block_device_info=None): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3751 |
"""Retrieve information about actual disk sizes of an instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3752 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3753 |
:param instance: nova.objects.Instance |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3754 |
:param block_device_info: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3755 |
Optional; Can be used to filter out devices which are |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3756 |
actually volumes. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3757 |
:return: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3758 |
json strings with below format:: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3759 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3760 |
"[{'path':'disk', |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3761 |
'type':'raw', |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3762 |
'virt_disk_size':'10737418240', |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3763 |
'backing_file':'backing_file', |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3764 |
'disk_size':'83886080' |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3765 |
'over_committed_disk_size':'10737418240'}, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3766 |
...]" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3767 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3768 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3769 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3770 |
def refresh_security_group_rules(self, security_group_id): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3771 |
"""This method is called after a change to security groups. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3772 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3773 |
All security groups and their associated rules live in the datastore, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3774 |
and calling this method should apply the updated rules to instances |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3775 |
running the specified security group. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3776 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3777 |
An error should be raised if the operation cannot complete. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3778 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3779 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3780 |
# TODO(Vek): Need to pass context in for access to auth_token |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3781 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3782 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3783 |
def refresh_security_group_members(self, security_group_id): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3784 |
"""This method is called when a security group is added to an instance. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3785 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3786 |
This message is sent to the virtualization drivers on hosts that are |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3787 |
running an instance that belongs to a security group that has a rule |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3788 |
that references the security group identified by `security_group_id`. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3789 |
It is the responsibility of this method to make sure any rules |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3790 |
that authorize traffic flow with members of the security group are |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3791 |
updated and any new members can communicate, and any removed members |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3792 |
cannot. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3793 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3794 |
Scenario: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3795 |
* we are running on host 'H0' and we have an instance 'i-0'. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3796 |
* instance 'i-0' is a member of security group 'speaks-b' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3797 |
* group 'speaks-b' has an ingress rule that authorizes group 'b' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3798 |
* another host 'H1' runs an instance 'i-1' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3799 |
* instance 'i-1' is a member of security group 'b' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3800 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3801 |
When 'i-1' launches or terminates we will receive the message |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3802 |
to update members of group 'b', at which time we will make |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3803 |
any changes needed to the rules for instance 'i-0' to allow |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3804 |
or deny traffic coming from 'i-1', depending on if it is being |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3805 |
added or removed from the group. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3806 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3807 |
In this scenario, 'i-1' could just as easily have been running on our |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3808 |
host 'H0' and this method would still have been called. The point was |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3809 |
that this method isn't called on the host where instances of that |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3810 |
group are running (as is the case with |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3811 |
:py:meth:`refresh_security_group_rules`) but is called where references |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3812 |
are made to authorizing those instances. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3813 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3814 |
An error should be raised if the operation cannot complete. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3815 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3816 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3817 |
# TODO(Vek): Need to pass context in for access to auth_token |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3818 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3819 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3820 |
def refresh_provider_fw_rules(self): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3821 |
"""This triggers a firewall update based on database changes. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3822 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3823 |
When this is called, rules have either been added or removed from the |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3824 |
datastore. You can retrieve rules with |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3825 |
:py:meth:`nova.db.provider_fw_rule_get_all`. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3826 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3827 |
Provider rules take precedence over security group rules. If an IP |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3828 |
would be allowed by a security group ingress rule, but blocked by |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3829 |
a provider rule, then packets from the IP are dropped. This includes |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3830 |
intra-project traffic in the case of the allow_project_net_traffic |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3831 |
flag for the libvirt-derived classes. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3832 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3833 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3834 |
# TODO(Vek): Need to pass context in for access to auth_token |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3835 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3836 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3837 |
def refresh_instance_security_rules(self, instance): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3838 |
"""Refresh security group rules |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3839 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3840 |
Gets called when an instance gets added to or removed from |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3841 |
the security group the instance is a member of or if the |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3842 |
group gains or loses a rule. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3843 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3844 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3845 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3846 |
def reset_network(self, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3847 |
"""reset networking for specified instance.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3848 |
# TODO(Vek): Need to pass context in for access to auth_token |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3849 |
pass |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3850 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3851 |
def ensure_filtering_rules_for_instance(self, instance, network_info): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3852 |
"""Setting up filtering rules and waiting for its completion. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3853 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3854 |
To migrate an instance, filtering rules to hypervisors |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3855 |
and firewalls are inevitable on destination host. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3856 |
( Waiting only for filtering rules to hypervisor, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3857 |
since filtering rules to firewall rules can be set faster). |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3858 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3859 |
Concretely, the below method must be called. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3860 |
- setup_basic_filtering (for nova-basic, etc.) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3861 |
- prepare_instance_filter(for nova-instance-instance-xxx, etc.) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3862 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3863 |
to_xml may have to be called since it defines PROJNET, PROJMASK. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3864 |
but libvirt migrates those value through migrateToURI(), |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3865 |
so , no need to be called. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3866 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3867 |
Don't use thread for this method since migration should |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3868 |
not be started when setting-up filtering rules operations |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3869 |
are not completed. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3870 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3871 |
:param instance: nova.objects.instance.Instance object |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3872 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3873 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3874 |
# TODO(Vek): Need to pass context in for access to auth_token |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3875 |
pass |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3876 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3877 |
def filter_defer_apply_on(self): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3878 |
"""Defer application of IPTables rules.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3879 |
pass |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3880 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3881 |
def filter_defer_apply_off(self): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3882 |
"""Turn off deferral of IPTables rules and apply the rules now.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3883 |
pass |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3884 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3885 |
def unfilter_instance(self, instance, network_info): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3886 |
"""Stop filtering instance.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3887 |
# TODO(Vek): Need to pass context in for access to auth_token |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3888 |
pass |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3889 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3890 |
def set_admin_password(self, instance, new_pass): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3891 |
"""Set the root password on the specified instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3892 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3893 |
:param instance: nova.objects.instance.Instance |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3894 |
:param new_pass: the new password |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3895 |
""" |
5312
b5fa281dd501
21660635 root-password functionality required for defcore coverage
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5311
diff
changeset
|
3896 |
name = instance['name'] |
b5fa281dd501
21660635 root-password functionality required for defcore coverage
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5311
diff
changeset
|
3897 |
zone = self._get_zone_by_name(name) |
b5fa281dd501
21660635 root-password functionality required for defcore coverage
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5311
diff
changeset
|
3898 |
if zone is None: |
b5fa281dd501
21660635 root-password functionality required for defcore coverage
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5311
diff
changeset
|
3899 |
raise exception.InstanceNotFound(instance_id=name) |
b5fa281dd501
21660635 root-password functionality required for defcore coverage
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5311
diff
changeset
|
3900 |
|
b5fa281dd501
21660635 root-password functionality required for defcore coverage
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5311
diff
changeset
|
3901 |
if zone.state == ZONE_STATE_RUNNING: |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
3902 |
out, err = utils.execute('/usr/sbin/zlogin', '-S', name, |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3903 |
'/usr/bin/passwd', '-p', |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3904 |
"'%s'" % sha256_crypt.encrypt(new_pass)) |
5312
b5fa281dd501
21660635 root-password functionality required for defcore coverage
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5311
diff
changeset
|
3905 |
else: |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
3906 |
raise exception.InstanceNotRunning(instance_id=name) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3907 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3908 |
def inject_file(self, instance, b64_path, b64_contents): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3909 |
"""Writes a file on the specified instance. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3910 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3911 |
The first parameter is an instance of nova.compute.service.Instance, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3912 |
and so the instance is being specified as instance.name. The second |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3913 |
parameter is the base64-encoded path to which the file is to be |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3914 |
written on the instance; the third is the contents of the file, also |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3915 |
base64-encoded. |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3916 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3917 |
NOTE(russellb) This method is deprecated and will be removed once it |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3918 |
can be removed from nova.compute.manager. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3919 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3920 |
# TODO(Vek): Need to pass context in for access to auth_token |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3921 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3922 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3923 |
def change_instance_metadata(self, context, instance, diff): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3924 |
"""Applies a diff to the instance metadata. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3925 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3926 |
This is an optional driver method which is used to publish |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3927 |
changes to the instance's metadata to the hypervisor. If the |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3928 |
hypervisor has no means of publishing the instance metadata to |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3929 |
the instance, then this method should not be implemented. |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3930 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3931 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3932 |
:param instance: nova.objects.instance.Instance |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3933 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3934 |
pass |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3935 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3936 |
def inject_network_info(self, instance, nw_info): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3937 |
"""inject network info for specified instance.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3938 |
# TODO(Vek): Need to pass context in for access to auth_token |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3939 |
pass |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3940 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3941 |
def poll_rebooting_instances(self, timeout, instances): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3942 |
"""Poll for rebooting instances |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3943 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3944 |
:param timeout: the currently configured timeout for considering |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3945 |
rebooting instances to be stuck |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3946 |
:param instances: instances that have been in rebooting state |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3947 |
longer than the configured timeout |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3948 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3949 |
# TODO(Vek): Need to pass context in for access to auth_token |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3950 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3951 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3952 |
def host_power_action(self, action): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3953 |
"""Reboots, shuts down or powers up the host.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3954 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3955 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3956 |
def host_maintenance_mode(self, host, mode): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3957 |
"""Start/Stop host maintenance window. On start, it triggers |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3958 |
guest VMs evacuation. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3959 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3960 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3961 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3962 |
def set_host_enabled(self, enabled): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3963 |
"""Sets the specified host's ability to accept new instances.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3964 |
# TODO(Vek): Need to pass context in for access to auth_token |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3965 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3966 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3967 |
def get_host_uptime(self): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3968 |
"""Returns the result of calling "uptime" on the target host.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3969 |
# TODO(Vek): Need to pass context in for access to auth_token |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3970 |
return utils.execute('/usr/bin/uptime')[0] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3971 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3972 |
def plug_vifs(self, instance, network_info): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3973 |
"""Plug VIFs into networks. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3974 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3975 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3976 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3977 |
# TODO(Vek): Need to pass context in for access to auth_token |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3978 |
pass |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3979 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3980 |
def unplug_vifs(self, instance, network_info): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3981 |
"""Unplug VIFs from networks. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3982 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3983 |
:param instance: nova.objects.instance.Instance |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3984 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3985 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3986 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3987 |
def get_host_cpu_stats(self): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3988 |
"""Get the currently known host CPU stats. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3989 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3990 |
:returns: a dict containing the CPU stat info, eg: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3991 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3992 |
| {'kernel': kern, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3993 |
| 'idle': idle, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3994 |
| 'user': user, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3995 |
| 'iowait': wait, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3996 |
| 'frequency': freq}, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3997 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3998 |
where kern and user indicate the cumulative CPU time |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3999 |
(nanoseconds) spent by kernel and user processes |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4000 |
respectively, idle indicates the cumulative idle CPU time |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4001 |
(nanoseconds), wait indicates the cumulative I/O wait CPU |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4002 |
time (nanoseconds), since the host is booting up; freq |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4003 |
indicates the current CPU frequency (MHz). All values are |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4004 |
long integers. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4005 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4006 |
""" |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4007 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4008 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4009 |
def block_stats(self, instance, disk_id): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4010 |
"""Return performance counters associated with the given disk_id on the |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4011 |
given instance. These are returned as [rd_req, rd_bytes, wr_req, |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4012 |
wr_bytes, errs], where rd indicates read, wr indicates write, req is |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4013 |
the total number of I/O requests made, bytes is the total number of |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4014 |
bytes transferred, and errs is the number of requests held up due to a |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4015 |
full pipeline. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4016 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4017 |
All counters are long integers. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4018 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4019 |
This method is optional. On some platforms (e.g. XenAPI) performance |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4020 |
statistics can be retrieved directly in aggregate form, without Nova |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4021 |
having to do the aggregation. On those platforms, this method is |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4022 |
unused. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4023 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4024 |
Note that this function takes an instance ID. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4025 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4026 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4027 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4028 |
def deallocate_networks_on_reschedule(self, instance): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4029 |
"""Does the driver want networks deallocated on reschedule?""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4030 |
return False |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4031 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4032 |
def macs_for_instance(self, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4033 |
"""What MAC addresses must this instance have? |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4034 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4035 |
Some hypervisors (such as bare metal) cannot do freeform virtualisation |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4036 |
of MAC addresses. This method allows drivers to return a set of MAC |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4037 |
addresses that the instance is to have. allocate_for_instance will take |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4038 |
this into consideration when provisioning networking for the instance. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4039 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4040 |
Mapping of MAC addresses to actual networks (or permitting them to be |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4041 |
freeform) is up to the network implementation layer. For instance, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4042 |
with openflow switches, fixed MAC addresses can still be virtualised |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4043 |
onto any L2 domain, with arbitrary VLANs etc, but regular switches |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4044 |
require pre-configured MAC->network mappings that will match the |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4045 |
actual configuration. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4046 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4047 |
Most hypervisors can use the default implementation which returns None. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4048 |
Hypervisors with MAC limits should return a set of MAC addresses, which |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4049 |
will be supplied to the allocate_for_instance call by the compute |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4050 |
manager, and it is up to that call to ensure that all assigned network |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4051 |
details are compatible with the set of MAC addresses. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4052 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4053 |
This is called during spawn_instance by the compute manager. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4054 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4055 |
:return: None, or a set of MAC ids (e.g. set(['12:34:56:78:90:ab'])). |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4056 |
None means 'no constraints', a set means 'these and only these |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4057 |
MAC addresses'. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4058 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4059 |
return None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4060 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4061 |
def dhcp_options_for_instance(self, instance): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4062 |
"""Get DHCP options for this instance. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4063 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4064 |
Some hypervisors (such as bare metal) require that instances boot from |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4065 |
the network, and manage their own TFTP service. This requires passing |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4066 |
the appropriate options out to the DHCP service. Most hypervisors can |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4067 |
use the default implementation which returns None. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4068 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4069 |
This is called during spawn_instance by the compute manager. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4070 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4071 |
Note that the format of the return value is specific to Quantum |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4072 |
client API. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4073 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4074 |
:return: None, or a set of DHCP options, eg: |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4075 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4076 |
| [{'opt_name': 'bootfile-name', |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4077 |
| 'opt_value': '/tftpboot/path/to/config'}, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4078 |
| {'opt_name': 'server-ip-address', |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4079 |
| 'opt_value': '1.2.3.4'}, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4080 |
| {'opt_name': 'tftp-server', |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4081 |
| 'opt_value': '1.2.3.4'} |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4082 |
| ] |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4083 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4084 |
""" |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4085 |
return None |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4086 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4087 |
def manage_image_cache(self, context, all_instances): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4088 |
"""Manage the driver's local image cache. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4089 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4090 |
Some drivers chose to cache images for instances on disk. This method |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4091 |
is an opportunity to do management of that cache which isn't directly |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4092 |
related to other calls into the driver. The prime example is to clean |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4093 |
the cache and remove images which are no longer of interest. |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4094 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4095 |
:param all_instances: nova.objects.instance.InstanceList |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4096 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4097 |
pass |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4098 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4099 |
def add_to_aggregate(self, context, aggregate, host, **kwargs): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4100 |
"""Add a compute host to an aggregate.""" |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
4101 |
# NOTE(jogo) Currently only used for XenAPI-Pool |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4102 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4103 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4104 |
def remove_from_aggregate(self, context, aggregate, host, **kwargs): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4105 |
"""Remove a compute host from an aggregate.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4106 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4107 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4108 |
def undo_aggregate_operation(self, context, op, aggregate, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4109 |
host, set_error=True): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4110 |
"""Undo for Resource Pools.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4111 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4112 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4113 |
def get_volume_connector(self, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4114 |
"""Get connector information for the instance for attaching to volumes. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4115 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4116 |
Connector information is a dictionary representing the ip of the |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4117 |
machine that will be making the connection, the name of the iscsi |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4118 |
initiator, the WWPN and WWNN values of the Fibre Channel initiator, |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4119 |
and the hostname of the machine as follows:: |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4120 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4121 |
{ |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4122 |
'ip': ip, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4123 |
'initiator': initiator, |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4124 |
'wwnns': wwnns, |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4125 |
'wwpns': wwpns, |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4126 |
'host': hostname |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4127 |
} |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4128 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4129 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4130 |
connector = {'ip': self.get_host_ip_addr(), |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4131 |
'host': CONF.host} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4132 |
if not self._initiator: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4133 |
self._initiator = self._get_iscsi_initiator() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4134 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4135 |
if self._initiator: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4136 |
connector['initiator'] = self._initiator |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4137 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4138 |
LOG.warning(_("Could not determine iSCSI initiator name"), |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4139 |
instance=instance) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4140 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4141 |
if not self._fc_wwnns: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4142 |
self._fc_wwnns = self._get_fc_wwnns() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4143 |
if not self._fc_wwnns or len(self._fc_wwnns) == 0: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4144 |
LOG.debug(_('Could not determine Fibre Channel ' |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4145 |
'World Wide Node Names'), |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4146 |
instance=instance) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4147 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4148 |
if not self._fc_wwpns: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4149 |
self._fc_wwpns = self._get_fc_wwpns() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4150 |
if not self._fc_wwpns or len(self._fc_wwpns) == 0: |
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
4151 |
LOG.debug(_('Could not determine Fibre Channel ' |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4152 |
'World Wide Port Names'), |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4153 |
instance=instance) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4154 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4155 |
if self._fc_wwnns and self._fc_wwpns: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4156 |
connector["wwnns"] = self._fc_wwnns |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4157 |
connector["wwpns"] = self._fc_wwpns |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4158 |
return connector |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4159 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4160 |
def get_available_nodes(self, refresh=False): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4161 |
"""Returns nodenames of all nodes managed by the compute service. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4162 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4163 |
This method is for multi compute-nodes support. If a driver supports |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4164 |
multi compute-nodes, this method returns a list of nodenames managed |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4165 |
by the service. Otherwise, this method should return |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4166 |
[hypervisor_hostname]. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4167 |
""" |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4168 |
if refresh or not self._host_stats: |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4169 |
self._update_host_stats() |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4170 |
stats = self._host_stats |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4171 |
if not isinstance(stats, list): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4172 |
stats = [stats] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4173 |
return [s['hypervisor_hostname'] for s in stats] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4174 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4175 |
def node_is_available(self, nodename): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4176 |
"""Return whether this compute service manages a particular node.""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4177 |
if nodename in self.get_available_nodes(): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4178 |
return True |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4179 |
# Refresh and check again. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4180 |
return nodename in self.get_available_nodes(refresh=True) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4181 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4182 |
def get_per_instance_usage(self): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4183 |
"""Get information about instance resource usage. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4184 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4185 |
:returns: dict of nova uuid => dict of usage info |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4186 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4187 |
return {} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4188 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4189 |
def instance_on_disk(self, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4190 |
"""Checks access of instance files on the host. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4191 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4192 |
:param instance: nova.objects.instance.Instance to lookup |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4193 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4194 |
Returns True if files of an instance with the supplied ID accessible on |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4195 |
the host, False otherwise. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4196 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4197 |
.. note:: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4198 |
Used in rebuild for HA implementation and required for validation |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4199 |
of access to instance shared disk files |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4200 |
""" |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4201 |
bdmobj = objects.BlockDeviceMappingList |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
4202 |
bdms = bdmobj.get_by_instance_uuid( |
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
4203 |
nova_context.get_admin_context(), |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
4204 |
instance['uuid']) |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4205 |
|
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
4206 |
root_ci = None |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4207 |
rootmp = instance['root_device_name'] |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
4208 |
for entry in bdms: |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4209 |
if entry['connection_info'] is None: |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4210 |
continue |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4211 |
|
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4212 |
if entry['device_name'] == rootmp: |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4213 |
root_ci = jsonutils.loads(entry['connection_info']) |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4214 |
break |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4215 |
|
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4216 |
if root_ci is None: |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
4217 |
msg = (_("Unable to find the root device for instance '%s'.") |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
4218 |
% instance['name']) |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4219 |
raise exception.NovaException(msg) |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4220 |
|
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4221 |
driver_type = root_ci['driver_volume_type'] |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
4222 |
return driver_type in shared_storage |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4223 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4224 |
def register_event_listener(self, callback): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4225 |
"""Register a callback to receive events. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4226 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4227 |
Register a callback to receive asynchronous event |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4228 |
notifications from hypervisors. The callback will |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4229 |
be invoked with a single parameter, which will be |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4230 |
an instance of the nova.virt.event.Event class. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4231 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4232 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4233 |
self._compute_event_callback = callback |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4234 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4235 |
def emit_event(self, event): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4236 |
"""Dispatches an event to the compute manager. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4237 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4238 |
Invokes the event callback registered by the |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4239 |
compute manager to dispatch the event. This |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4240 |
must only be invoked from a green thread. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4241 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4242 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4243 |
if not self._compute_event_callback: |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4244 |
LOG.debug("Discarding event %s", str(event)) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4245 |
return |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4246 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4247 |
if not isinstance(event, virtevent.Event): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4248 |
raise ValueError( |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4249 |
_("Event must be an instance of nova.virt.event.Event")) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4250 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4251 |
try: |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4252 |
LOG.debug("Emitting event %s", str(event)) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4253 |
self._compute_event_callback(event) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4254 |
except Exception as ex: |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4255 |
LOG.error(_LE("Exception dispatching event %(event)s: %(ex)s"), |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4256 |
{'event': event, 'ex': ex}) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4257 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4258 |
def delete_instance_files(self, instance): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4259 |
"""Delete any lingering instance files for an instance. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4260 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4261 |
:param instance: nova.objects.instance.Instance |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4262 |
:returns: True if the instance was deleted from disk, False otherwise. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4263 |
""" |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
4264 |
# Delete the zone configuration for the instance using destroy, because |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
4265 |
# it will simply take care of the work, and we don't need to duplicate |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
4266 |
# the code here. |
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
4267 |
LOG.debug(_("Cleaning up for instance %s"), instance['name']) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
4268 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
4269 |
self.destroy(None, instance, None) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
4270 |
except Exception: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
4271 |
return False |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4272 |
return True |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4273 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4274 |
@property |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4275 |
def need_legacy_block_device_info(self): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4276 |
"""Tell the caller if the driver requires legacy block device info. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4277 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4278 |
Tell the caller whether we expect the legacy format of block |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4279 |
device info to be passed in to methods that expect it. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4280 |
""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4281 |
return True |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4282 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4283 |
def volume_snapshot_create(self, context, instance, volume_id, |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4284 |
create_info): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4285 |
"""Snapshots volumes attached to a specified instance. |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4286 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4287 |
:param context: request context |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4288 |
:param instance: nova.objects.instance.Instance that has the volume |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4289 |
attached |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4290 |
:param volume_id: Volume to be snapshotted |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4291 |
:param create_info: The data needed for nova to be able to attach |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4292 |
to the volume. This is the same data format returned by |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4293 |
Cinder's initialize_connection() API call. In the case of |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4294 |
doing a snapshot, it is the image file Cinder expects to be |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4295 |
used as the active disk after the snapshot operation has |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4296 |
completed. There may be other data included as well that is |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4297 |
needed for creating the snapshot. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4298 |
""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4299 |
raise NotImplementedError() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4300 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4301 |
def volume_snapshot_delete(self, context, instance, volume_id, |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4302 |
snapshot_id, delete_info): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4303 |
"""Snapshots volumes attached to a specified instance. |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4304 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4305 |
:param context: request context |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4306 |
:param instance: nova.objects.instance.Instance that has the volume |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4307 |
attached |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4308 |
:param volume_id: Attached volume associated with the snapshot |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4309 |
:param snapshot_id: The snapshot to delete. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4310 |
:param delete_info: Volume backend technology specific data needed to |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4311 |
be able to complete the snapshot. For example, in the case of |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4312 |
qcow2 backed snapshots, this would include the file being |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4313 |
merged, and the file being merged into (if appropriate). |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4314 |
""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4315 |
raise NotImplementedError() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4316 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4317 |
def default_root_device_name(self, instance, image_meta, root_bdm): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4318 |
"""Provide a default root device name for the driver.""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4319 |
raise NotImplementedError() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4320 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4321 |
def default_device_names_for_instance(self, instance, root_device_name, |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4322 |
*block_device_lists): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4323 |
"""Default the missing device names in the block device mapping.""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4324 |
raise NotImplementedError() |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4325 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4326 |
def is_supported_fs_format(self, fs_type): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4327 |
"""Check whether the file format is supported by this driver |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4328 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4329 |
:param fs_type: the file system type to be checked, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4330 |
the validate values are defined at disk API module. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4331 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4332 |
# NOTE(jichenjc): Return False here so that every hypervisor |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4333 |
# need to define their supported file system |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4334 |
# type and implement this function at their |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4335 |
# virt layer. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4336 |
return False |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4337 |
|
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4338 |
def quiesce(self, context, instance, image_meta): |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4339 |
"""Quiesce the specified instance to prepare for snapshots. |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4340 |
|
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4341 |
If the specified instance doesn't support quiescing, |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4342 |
InstanceQuiesceNotSupported is raised. When it fails to quiesce by |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4343 |
other errors (e.g. agent timeout), NovaException is raised. |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4344 |
|
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4345 |
:param context: request context |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4346 |
:param instance: nova.objects.instance.Instance to be quiesced |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4347 |
:param image_meta: image object returned by nova.image.glance that |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4348 |
defines the image from which this instance |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4349 |
was created |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4350 |
""" |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4351 |
raise NotImplementedError() |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4352 |
|
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4353 |
def unquiesce(self, context, instance, image_meta): |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4354 |
"""Unquiesce the specified instance after snapshots. |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4355 |
|
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4356 |
If the specified instance doesn't support quiescing, |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4357 |
InstanceQuiesceNotSupported is raised. When it fails to quiesce by |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4358 |
other errors (e.g. agent timeout), NovaException is raised. |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4359 |
|
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4360 |
:param context: request context |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4361 |
:param instance: nova.objects.instance.Instance to be unquiesced |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4362 |
:param image_meta: image object returned by nova.image.glance that |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4363 |
defines the image from which this instance |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4364 |
was created |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4365 |
""" |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4366 |
raise NotImplementedError() |