author | david.comay@oracle.com |
Tue, 15 Dec 2015 00:08:40 -0800 | |
changeset 5194 | e5ea1fd7704a |
parent 5193 | 3120ba36a435 |
child 5195 | 694672bf3c17 |
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 |
# |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4 |
# Copyright (c) 2013, 2015, 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 |
|
4669
342ab6111bb5
20957828 swift Makefile has typo for COMPONENT_BUGDB
david.comay@oracle.com
parents:
4585
diff
changeset
|
30 |
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
|
31 |
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
|
32 |
import rad.client |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
33 |
import rad.connect |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
34 |
from solaris_install.archive.checkpoints import InstantiateUnifiedArchive |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
35 |
from solaris_install.archive import LOGFILE as ARCHIVE_LOGFILE |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
36 |
from solaris_install.archive import UnifiedArchive |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
37 |
from solaris_install.engine import InstallEngine |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
38 |
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
|
39 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
40 |
from cinderclient import exceptions as cinder_exception |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
41 |
from eventlet import greenthread |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
42 |
from lxml import etree |
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
|
43 |
from oslo_config import cfg |
4695
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
44 |
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
|
45 |
|
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
46 |
from nova.api.metadata import password |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
47 |
from nova.compute import power_state |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
48 |
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
|
49 |
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
|
50 |
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
|
51 |
from nova import conductor |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
52 |
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
|
53 |
from nova import crypto |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
54 |
from nova import exception |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
55 |
from nova.i18n import _ |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
56 |
from nova.image import glance |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
57 |
from nova.network import neutronv2 |
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
58 |
from nova import objects |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
59 |
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
|
60 |
from nova.openstack.common import fileutils |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
61 |
from nova.openstack.common import jsonutils |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
62 |
from nova.openstack.common import log as logging |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
63 |
from nova.openstack.common import loopingcall |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
64 |
from nova.openstack.common import processutils |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
65 |
from nova.openstack.common import strutils |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
66 |
from nova import utils |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
67 |
from nova.virt import driver |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
68 |
from nova.virt import event as virtevent |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
69 |
from nova.virt import images |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
70 |
from nova.virt.solariszones import sysconfig |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
71 |
from nova.volume.cinder import API |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
72 |
from nova.volume.cinder import cinderclient |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
73 |
from nova.volume.cinder import get_cinder_client_version |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
74 |
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
|
75 |
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
|
76 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
77 |
solariszones_opts = [ |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
78 |
cfg.StrOpt('glancecache_dirname', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
79 |
default='$state_path/images', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
80 |
help='Default path to Glance cache for Solaris Zones.'), |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
81 |
cfg.StrOpt('solariszones_snapshots_directory', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
82 |
default='$instances_path/snapshots', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
83 |
help='Location where solariszones driver will store snapshots ' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
84 |
'before uploading them to the 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
|
85 |
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
|
86 |
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
|
87 |
help='Default path for suspend images for Solaris Zones.'), |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
88 |
] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
89 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
90 |
CONF = cfg.CONF |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
91 |
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
|
92 |
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
|
93 |
LOG = logging.getLogger(__name__) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
94 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
95 |
# 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
|
96 |
# 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
|
97 |
# 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
|
98 |
# the zonemgr(3RAD) provider. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
99 |
ZONE_STATE_CONFIGURED = 'configured' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
100 |
ZONE_STATE_INCOMPLETE = 'incomplete' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
101 |
ZONE_STATE_UNAVAILABLE = 'unavailable' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
102 |
ZONE_STATE_INSTALLED = 'installed' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
103 |
ZONE_STATE_READY = 'ready' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
104 |
ZONE_STATE_RUNNING = 'running' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
105 |
ZONE_STATE_SHUTTING_DOWN = 'shutting_down' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
106 |
ZONE_STATE_DOWN = 'down' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
107 |
ZONE_STATE_MOUNTED = 'mounted' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
108 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
109 |
# 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
|
110 |
SOLARISZONES_POWER_STATE = { |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
111 |
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
|
112 |
ZONE_STATE_INCOMPLETE: power_state.NOSTATE, |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
113 |
ZONE_STATE_UNAVAILABLE: power_state.NOSTATE, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
114 |
ZONE_STATE_INSTALLED: power_state.SHUTDOWN, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
115 |
ZONE_STATE_READY: power_state.RUNNING, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
116 |
ZONE_STATE_RUNNING: power_state.RUNNING, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
117 |
ZONE_STATE_SHUTTING_DOWN: power_state.RUNNING, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
118 |
ZONE_STATE_DOWN: power_state.RUNNING, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
119 |
ZONE_STATE_MOUNTED: power_state.NOSTATE |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
120 |
} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
121 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
122 |
# 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
|
123 |
ZONE_BRAND_LABELED = 'labeled' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
124 |
ZONE_BRAND_SOLARIS = 'solaris' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
125 |
ZONE_BRAND_SOLARIS_KZ = 'solaris-kz' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
126 |
ZONE_BRAND_SOLARIS10 = 'solaris10' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
127 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
128 |
# 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
|
129 |
# brand template. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
130 |
ZONE_BRAND_TEMPLATE = { |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
131 |
ZONE_BRAND_SOLARIS: 'SYSdefault', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
132 |
ZONE_BRAND_SOLARIS_KZ: 'SYSsolaris-kz', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
133 |
} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
134 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
135 |
MAX_CONSOLE_BYTES = 102400 |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
136 |
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
|
137 |
# 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
|
138 |
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
|
139 |
XTERM_PATH = '/usr/bin/xterm' |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
140 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
141 |
ROOTZPOOL_RESOURCE = 'rootzpool' |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
142 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
143 |
|
4781
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
144 |
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
|
145 |
"""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
|
146 |
try: |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
147 |
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
|
148 |
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
|
149 |
return None |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
150 |
except Exception: |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
151 |
raise |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
152 |
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
|
153 |
|
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
154 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
155 |
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
|
156 |
"""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
|
157 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
158 |
val = zone.getResourceProperties(zonemgr.Resource(resource, filter), |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
159 |
[prop]) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
160 |
except rad.client.ObjectError: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
161 |
return None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
162 |
except Exception: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
163 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
164 |
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
|
165 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
166 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
167 |
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
|
168 |
"""Lookup specified property with value from specified Solaris Zone |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
169 |
resource. Returns property 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
|
170 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
171 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
172 |
resources = zone.getResources(zonemgr.Resource(resource)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
173 |
for resource in resources: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
174 |
for propertee in resource.properties: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
175 |
if propertee.name == prop and propertee.value == value: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
176 |
return propertee |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
177 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
178 |
return None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
179 |
except rad.client.ObjectError: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
180 |
return None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
181 |
except Exception: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
182 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
183 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
184 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
185 |
class SolarisVolumeAPI(API): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
186 |
""" 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
|
187 |
""" |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
188 |
@translate_volume_exception |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
189 |
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
|
190 |
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
|
191 |
availability_zone=None, source_volume=None): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
192 |
"""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
|
193 |
create with a source_volid argument |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
194 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
195 |
:param context: the context for the clone |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
196 |
: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
|
197 |
volume |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
198 |
: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
|
199 |
: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
|
200 |
:param snapshot: Snapshot object |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
201 |
: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
|
202 |
:param volume_type: type of volume |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
203 |
:param metadata: Additional metadata for the volume |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
204 |
: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
|
205 |
:param source_volume: Volume object |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
206 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
207 |
Returns a volume object |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
208 |
""" |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
209 |
if snapshot is not None: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
210 |
snapshot_id = snapshot['id'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
211 |
else: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
212 |
snapshot_id = None |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
213 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
214 |
if source_volume is not None: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
215 |
source_volid = source_volume['id'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
216 |
else: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
217 |
source_volid = None |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
218 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
219 |
kwargs = dict(snapshot_id=snapshot_id, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
220 |
volume_type=volume_type, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
221 |
user_id=context.user_id, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
222 |
project_id=context.project_id, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
223 |
availability_zone=availability_zone, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
224 |
metadata=metadata, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
225 |
imageRef=image_id, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
226 |
source_volid=source_volid) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
227 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
228 |
version = get_cinder_client_version(context) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
229 |
if version == '1': |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
230 |
kwargs['display_name'] = name |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
231 |
kwargs['display_description'] = description |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
232 |
elif version == '2': |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
233 |
kwargs['name'] = name |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
234 |
kwargs['description'] = description |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
235 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
236 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
237 |
item = cinderclient(context).volumes.create(size, **kwargs) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
238 |
return _untranslate_volume_summary_view(context, item) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
239 |
except cinder_exception.OverLimit: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
240 |
raise exception.OverQuota(overs='volumes') |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
241 |
except cinder_exception.BadRequest as err: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
242 |
raise exception.InvalidInput(reason=unicode(err)) |
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 |
@translate_volume_exception |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
245 |
def update(self, context, volume_id, fields): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
246 |
"""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
|
247 |
via a call to cinderclient |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
248 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
249 |
:param context: the context for the update |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
250 |
: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
|
251 |
: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
|
252 |
""" |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
253 |
cinderclient(context).volumes.update(volume_id, **fields) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
254 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
255 |
@translate_volume_exception |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
256 |
def extend(self, context, volume, newsize): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
257 |
"""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
|
258 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
259 |
:param context: the context for the extend |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
260 |
:param volume: the volume object to extend |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
261 |
: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
|
262 |
""" |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
263 |
cinderclient(context).volumes.extend(volume, newsize) |
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 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
266 |
class ZoneConfig(object): |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
267 |
"""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
|
268 |
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
|
269 |
before exiting |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
270 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
271 |
def __init__(self, zone): |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
272 |
"""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
|
273 |
non-global zone. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
274 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
275 |
self.zone = zone |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
276 |
self.editing = False |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
277 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
278 |
def __enter__(self): |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
279 |
"""enables the editing of the zone.""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
280 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
281 |
self.zone.editConfig() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
282 |
self.editing = True |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
283 |
return self |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
284 |
except rad.client.ObjectError as err: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
285 |
LOG.error(_("Unable to initialize editing of instance '%s' via " |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
286 |
"zonemgr(3RAD): %s") % (self.zone.name, err)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
287 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
288 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
289 |
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
|
290 |
"""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
|
291 |
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
|
292 |
commit the new configuration. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
293 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
294 |
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
|
295 |
# 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
|
296 |
self.zone.cancelConfig() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
297 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
298 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
299 |
# commit the config |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
300 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
301 |
self.zone.commitConfig() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
302 |
except rad.client.ObjectError as err: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
303 |
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
|
304 |
"instance '%s' via zonemgr(3RAD): %s") |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
305 |
% (self.zone.name, err)) |
4551
aeda29f57900
21307395 nova ZoneConfig class should call cancelConfig when editConfig fails in __exit__
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
4550
diff
changeset
|
306 |
|
aeda29f57900
21307395 nova ZoneConfig class should call cancelConfig when editConfig fails in __exit__
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
4550
diff
changeset
|
307 |
# 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
|
308 |
self.zone.cancelConfig() |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
309 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
310 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
311 |
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
|
312 |
"""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
|
313 |
with the given property(s). |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
314 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
315 |
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
|
316 |
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
|
317 |
# the value is already set |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
318 |
return |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
319 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
320 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
321 |
if current is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
322 |
self.zone.addResource(zonemgr.Resource( |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
323 |
resource, [zonemgr.Property(prop, value)])) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
324 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
325 |
self.zone.setResourceProperties( |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
326 |
zonemgr.Resource(resource), |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
327 |
[zonemgr.Property(prop, value)]) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
328 |
except rad.client.ObjectError as err: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
329 |
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
|
330 |
"instance '%s' via zonemgr(3RAD): %s") |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
331 |
% (prop, resource, self.zone.name, err)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
332 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
333 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
334 |
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
|
335 |
"""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
|
336 |
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
|
337 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
338 |
: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
|
339 |
resource. |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
340 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
341 |
if props is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
342 |
props = [] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
343 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
344 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
345 |
self.zone.addResource(zonemgr.Resource(resource, props)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
346 |
except rad.client.ObjectError as err: |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
347 |
result = err.get_payload() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
348 |
if not ignore_exists: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
349 |
LOG.error(_("Unable to create new resource '%s' for instance " |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
350 |
"'%s' via zonemgr(3RAD): %s") |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
351 |
% (resource, self.zone.name, err)) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
352 |
raise |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
353 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
354 |
if result.code == zonemgr.ErrorCode.RESOURCE_ALREADY_EXISTS: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
355 |
self.zone.setResourceProperties(zonemgr.Resource( |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
356 |
resource, None), props) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
357 |
else: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
358 |
raise |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
359 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
360 |
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
|
361 |
"""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
|
362 |
list specified in props. |
1760
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 |
if props is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
365 |
props = [] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
366 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
367 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
368 |
self.zone.removeResources(zonemgr.Resource(resource, props)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
369 |
except rad.client.ObjectError as err: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
370 |
LOG.error(_("Unable to remove resource '%s' for instance '%s' via " |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
371 |
"zonemgr(3RAD): %s") % (resource, self.zone.name, err)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
372 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
373 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
374 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
375 |
class SolarisZonesDriver(driver.ComputeDriver): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
376 |
"""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
|
377 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
378 |
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
|
379 |
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
|
380 |
(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
|
381 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
382 |
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
|
383 |
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
|
384 |
'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
|
385 |
'instance name' are synonyms. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
386 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
387 |
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
|
388 |
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
|
389 |
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
|
390 |
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
|
391 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
392 |
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
|
393 |
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
|
394 |
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
|
395 |
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
|
396 |
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
|
397 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
398 |
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
|
399 |
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
|
400 |
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
|
401 |
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
|
402 |
virtualization platform. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
403 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
404 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
405 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
406 |
capabilities = { |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
407 |
"has_imagecache": False, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
408 |
"supports_recreate": False, |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
409 |
} |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
410 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
411 |
def __init__(self, virtapi): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
412 |
self.virtapi = virtapi |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
413 |
self._compute_event_callback = None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
414 |
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
|
415 |
self._fc_hbas = None |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
416 |
self._fc_wwnns = None |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
417 |
self._fc_wwpns = None |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
418 |
self._host_stats = {} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
419 |
self._initiator = None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
420 |
self._install_engine = None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
421 |
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
|
422 |
self._rad_connection = None |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
423 |
self._uname = os.uname() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
424 |
self._validated_archives = list() |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
425 |
self._volume_api = SolarisVolumeAPI() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
426 |
self._rootzpool_suffix = ROOTZPOOL_RESOURCE |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
427 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
428 |
@property |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
429 |
def rad_connection(self): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
430 |
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
|
431 |
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
|
432 |
else: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
433 |
# 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
|
434 |
# closed connection |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
435 |
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
|
436 |
# 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
|
437 |
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
|
438 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
439 |
return self._rad_connection |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
440 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
441 |
def _init_rad(self): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
442 |
"""Connect to RAD providers for kernel statistics and Solaris |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
443 |
Zones. By connecting to the local rad(1M) service through a |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
444 |
UNIX domain socket, kernel statistics can be read via |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
445 |
kstat(3RAD) and Solaris Zones can be configured and controlled |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
446 |
via zonemgr(3RAD). |
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 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
449 |
try: |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
450 |
self._kstat_control = self.rad_connection.get_object( |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
451 |
kstat.Control()) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
452 |
except Exception as reason: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
453 |
msg = (_('Unable to connect to svc:/system/rad:local: %s') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
454 |
% reason) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
455 |
raise exception.NovaException(msg) |
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 |
def init_host(self, host): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
458 |
"""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
|
459 |
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
|
460 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
461 |
# TODO(Vek): Need to pass context in for access to auth_token |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
462 |
self._init_rad() |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
463 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
464 |
def cleanup_host(self, host): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
465 |
"""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
|
466 |
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
|
467 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
468 |
pass |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
469 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
470 |
def _get_fc_hbas(self): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
471 |
"""Get Fibre Channel HBA information.""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
472 |
if self._fc_hbas: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
473 |
return self._fc_hbas |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
474 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
475 |
out = None |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
476 |
try: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
477 |
out, err = utils.execute('/usr/sbin/fcinfo', 'hba-port') |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
478 |
except processutils.ProcessExecutionError as err: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
479 |
return [] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
480 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
481 |
if out is None: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
482 |
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
|
483 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
484 |
hbas = [] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
485 |
hba = {} |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
486 |
for line in out.splitlines(): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
487 |
line = line.strip() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
488 |
# 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
|
489 |
# 1: Port WWN |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
490 |
# 2: State (online|offline) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
491 |
# 3: Node WWN |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
492 |
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
|
493 |
# New HBA port entry |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
494 |
hba = {} |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
495 |
wwpn = line.split()[-1] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
496 |
hba['port_name'] = wwpn |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
497 |
continue |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
498 |
elif line.startswith("Port Mode:"): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
499 |
mode = line.split()[-1] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
500 |
# Skip Target mode ports |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
501 |
if mode != 'Initiator': |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
502 |
break |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
503 |
elif line.startswith("State:"): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
504 |
state = line.split()[-1] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
505 |
hba['port_state'] = state |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
506 |
continue |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
507 |
elif line.startswith("Node WWN:"): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
508 |
wwnn = line.split()[-1] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
509 |
hba['node_name'] = wwnn |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
510 |
continue |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
511 |
if len(hba) == 3: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
512 |
hbas.append(hba) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
513 |
hba = {} |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
514 |
self._fc_hbas = hbas |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
515 |
return self._fc_hbas |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
516 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
517 |
def _get_fc_wwnns(self): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
518 |
"""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
|
519 |
hbas = self._get_fc_hbas() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
520 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
521 |
wwnns = [] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
522 |
for hba in hbas: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
523 |
if hba['port_state'] == 'online': |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
524 |
wwnn = hba['node_name'] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
525 |
wwnns.append(wwnn) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
526 |
return wwnns |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
527 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
528 |
def _get_fc_wwpns(self): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
529 |
"""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
|
530 |
hbas = self._get_fc_hbas() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
531 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
532 |
wwpns = [] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
533 |
for hba in hbas: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
534 |
if hba['port_state'] == 'online': |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
535 |
wwpn = hba['port_name'] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
536 |
wwpns.append(wwpn) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
537 |
return wwpns |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
538 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
539 |
def _get_iscsi_initiator(self): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
540 |
""" 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
|
541 |
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
|
542 |
'initiator-node') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
543 |
# Sample first line of command output: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
544 |
# 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
|
545 |
initiator_name_line = out.splitlines()[0] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
546 |
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
|
547 |
return initiator_iqn |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
548 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
549 |
def _get_zone_by_name(self, name): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
550 |
"""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
|
551 |
try: |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
552 |
zone = self.rad_connection.get_object( |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
553 |
zonemgr.Zone(), rad.client.ADRGlobPattern({'name': name})) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
554 |
except rad.client.NotFoundError: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
555 |
return None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
556 |
except Exception: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
557 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
558 |
return zone |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
559 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
560 |
def _get_state(self, zone): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
561 |
"""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
|
562 |
return SOLARISZONES_POWER_STATE[zone.state] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
563 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
564 |
def _pages_to_kb(self, pages): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
565 |
"""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
|
566 |
return (pages * self._pagesize) / 1024 |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
567 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
568 |
def _get_max_mem(self, zone): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
569 |
"""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
|
570 |
if zone.brand == ZONE_BRAND_SOLARIS: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
571 |
mem_resource = 'swap' |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
572 |
else: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
573 |
mem_resource = 'physical' |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
574 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
575 |
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
|
576 |
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
|
577 |
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
|
578 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
579 |
# 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
|
580 |
# 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
|
581 |
# memory. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
582 |
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
|
583 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
584 |
def _get_mem(self, zone): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
585 |
"""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
|
586 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
587 |
# 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
|
588 |
# 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
|
589 |
# for now. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
590 |
return self._get_max_mem(zone) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
591 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
592 |
def _get_num_cpu(self, zone): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
593 |
"""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
|
594 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
595 |
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
|
596 |
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
|
597 |
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
|
598 |
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
|
599 |
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
|
600 |
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
|
601 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
602 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
603 |
# 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
|
604 |
# CPUs defined there. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
605 |
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
|
606 |
if ncpus is not None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
607 |
min = ncpus.split('-', 1)[0] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
608 |
if min.isdigit(): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
609 |
return int(min) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
610 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
611 |
# 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
|
612 |
# number of CPUs defined there. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
613 |
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
|
614 |
if ncpus is not None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
615 |
max = ncpus.split('-', 1)[-1] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
616 |
if max.isdigit(): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
617 |
return int(max) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
618 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
619 |
# 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
|
620 |
# 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
|
621 |
# 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
|
622 |
# 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
|
623 |
# of online CPUs. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
624 |
return os.sysconf('SC_NPROCESSORS_ONLN') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
625 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
626 |
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
|
627 |
"""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
|
628 |
pattern = { |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
629 |
'class': kstat_class, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
630 |
'module': module, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
631 |
'instance': instance, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
632 |
'name': name |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
633 |
} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
634 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
635 |
self._kstat_control.update() |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
636 |
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
|
637 |
kstat.Kstat(), rad.client.ADRGlobPattern(pattern)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
638 |
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
|
639 |
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
|
640 |
"'%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
|
641 |
% (module, instance, name, kstat_class, reason)) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
642 |
return None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
643 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
644 |
kstat_data = {} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
645 |
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
|
646 |
kstat_data[named.name] = getattr(named.value, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
647 |
str(named.value.discriminant)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
648 |
return kstat_data |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
649 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
650 |
def _get_cpu_time(self, zone): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
651 |
"""Return the CPU time used in nanoseconds.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
652 |
if zone.id == -1: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
653 |
return 0 |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
654 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
655 |
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
|
656 |
'sys_zone_aggr') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
657 |
if kstat_data is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
658 |
return 0 |
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 |
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
|
661 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
662 |
def get_info(self, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
663 |
"""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
|
664 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
665 |
: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
|
666 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
667 |
Returns a dict containing: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
668 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
669 |
:state: 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
|
670 |
:max_mem: (int) the maximum memory in KBytes allowed |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
671 |
:mem: (int) 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
|
672 |
:num_cpu: (int) 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
|
673 |
:cpu_time: (int) the CPU time used in nanoseconds |
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 |
# 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
|
676 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
677 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
678 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
679 |
LOG.error(_("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
|
680 |
% name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
681 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
682 |
return { |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
683 |
'state': self._get_state(zone), |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
684 |
'max_mem': self._get_max_mem(zone), |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
685 |
'mem': self._get_mem(zone), |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
686 |
'num_cpu': self._get_num_cpu(zone), |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
687 |
'cpu_time': self._get_cpu_time(zone) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
688 |
} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
689 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
690 |
def get_num_instances(self): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
691 |
"""Return the total number of virtual machines. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
692 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
693 |
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
|
694 |
about. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
695 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
696 |
.. note:: |
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 |
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
|
699 |
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
|
700 |
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
|
701 |
efficient. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
702 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
703 |
return len(self.list_instances()) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
704 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
705 |
def instance_exists(self, instance): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
706 |
"""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
|
707 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
708 |
:param instance: The instance to lookup |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
709 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
710 |
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
|
711 |
the host, False otherwise. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
712 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
713 |
.. note:: |
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 |
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
|
716 |
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
|
717 |
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
|
718 |
efficient. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
719 |
""" |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
720 |
try: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
721 |
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
|
722 |
except NotImplementedError: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
723 |
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
|
724 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
725 |
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
|
726 |
"""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
|
727 |
of the given flavor. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
728 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
729 |
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
|
730 |
calculations are desired. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
731 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
732 |
: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
|
733 |
: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
|
734 |
""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
735 |
return {'memory_mb': 0} |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
736 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
737 |
def _get_list_zone_object(self): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
738 |
"""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
|
739 |
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
|
740 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
741 |
def list_instances(self): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
742 |
"""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
|
743 |
layer, as a list. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
744 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
745 |
# 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
|
746 |
instances_list = [] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
747 |
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
|
748 |
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
|
749 |
return instances_list |
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 |
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
|
752 |
"""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
|
753 |
layer, as a list. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
754 |
""" |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
755 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
756 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
757 |
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
|
758 |
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
|
759 |
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
|
760 |
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
|
761 |
preserve_ephemeral=False): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
762 |
"""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
|
763 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
764 |
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
|
765 |
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
|
766 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
767 |
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
|
768 |
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
|
769 |
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
|
770 |
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
|
771 |
up steps. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
772 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
773 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
774 |
: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
|
775 |
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
|
776 |
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
|
777 |
: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
|
778 |
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
|
779 |
: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
|
780 |
: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
|
781 |
: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
|
782 |
: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
|
783 |
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
|
784 |
usage. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
785 |
: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
|
786 |
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
|
787 |
usage. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
788 |
:param network_info: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
789 |
: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
|
790 |
: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
|
791 |
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
|
792 |
: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
|
793 |
attached to the instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
794 |
: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
|
795 |
partition must be preserved on rebuild |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
796 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
797 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
798 |
|
5191
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
799 |
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
|
800 |
"""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
|
801 |
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
|
802 |
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
|
803 |
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
|
804 |
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
|
805 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
806 |
def _fetch_image(self, context, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
807 |
"""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
|
808 |
glancecache_dirname = CONF.glancecache_dirname |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
809 |
fileutils.ensure_tree(glancecache_dirname) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
810 |
image = ''.join([glancecache_dirname, '/', instance['image_ref']]) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
811 |
if os.path.exists(image): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
812 |
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
|
813 |
% instance['image_ref']) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
814 |
return image |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
815 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
816 |
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
|
817 |
% instance['image_ref']) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
818 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
819 |
images.fetch(context, instance['image_ref'], image, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
820 |
instance['user_id'], instance['project_id']) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
821 |
except Exception as reason: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
822 |
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
|
823 |
% (instance['image_ref'], reason)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
824 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
825 |
return image |
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 _validate_image(self, image, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
828 |
"""Validate a glance image for compatibility with the instance""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
829 |
# Skip if the image was already checked and confirmed as valid |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
830 |
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
|
831 |
return |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
832 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
833 |
if self._install_engine is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
834 |
self._install_engine = InstallEngine(ARCHIVE_LOGFILE) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
835 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
836 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
837 |
init_ua_cp = InstantiateUnifiedArchive(instance['image_ref'], |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
838 |
image) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
839 |
init_ua_cp.execute() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
840 |
except Exception: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
841 |
reason = (_("Image query failed. Possibly invalid or corrupt. " |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
842 |
"Log file location: %s:%s") |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
843 |
% (self._uname[1], ARCHIVE_LOGFILE)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
844 |
LOG.error(reason) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
845 |
raise exception.ImageUnacceptable(image_id=instance['image_ref'], |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
846 |
reason=reason) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
847 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
848 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
849 |
ua = self._install_engine.doc.volatile.get_first_child( |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
850 |
class_type=UnifiedArchive) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
851 |
# Validate the image at this point to ensure: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
852 |
# - contains one deployable system |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
853 |
deployables = ua.archive_objects |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
854 |
if len(deployables) != 1: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
855 |
reason = (_('Image must contain only 1 deployable system')) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
856 |
raise exception.ImageUnacceptable( |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
857 |
image_id=instance['image_ref'], |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
858 |
reason=reason) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
859 |
# - matching architecture |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
860 |
deployable_arch = deployables[0].system.arch |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
861 |
compute_arch = platform.processor() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
862 |
if deployable_arch != compute_arch: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
863 |
reason = (_('Image architecture "%s" is incompatible with this' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
864 |
'compute host architecture: "%s"') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
865 |
% (deployable_arch, compute_arch)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
866 |
raise exception.ImageUnacceptable( |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
867 |
image_id=instance['image_ref'], |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
868 |
reason=reason) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
869 |
# - single root pool only |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
870 |
streams = deployables[0].zfs_streams |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
871 |
stream_pools = set(stream.zpool for stream in streams) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
872 |
if len(stream_pools) > 1: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
873 |
reason = (_('Image contains more than one zpool: "%s"') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
874 |
% (stream_pools)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
875 |
raise exception.ImageUnacceptable( |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
876 |
image_id=instance['image_ref'], |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
877 |
reason=reason) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
878 |
# - looks like it's OK |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
879 |
self._validated_archives.append(instance['image_ref']) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
880 |
finally: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
881 |
# Clear the reference to the UnifiedArchive object in the engine |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
882 |
# data cache to avoid collision with the next checkpoint execution. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
883 |
self._install_engine.doc.volatile.delete_children( |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
884 |
class_type=UnifiedArchive) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
885 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
886 |
def _suri_from_volume_info(self, connection_info): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
887 |
"""Returns a suri(5) formatted string based on connection_info |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
888 |
Currently supports local ZFS volume and iSCSI driver types. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
889 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
890 |
driver_type = connection_info['driver_volume_type'] |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
891 |
if driver_type not in ['iscsi', 'fibre_channel', 'local']: |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
892 |
raise exception.VolumeDriverNotFound(driver_type=driver_type) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
893 |
if driver_type == 'local': |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
894 |
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
|
895 |
elif driver_type == 'iscsi': |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
896 |
data = connection_info['data'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
897 |
# suri(5) format: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
898 |
# iscsi://<host>[:<port>]/target.<IQN>,lun.<LUN> |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
899 |
# Sample iSCSI connection data values: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
900 |
# target_portal: 192.168.1.244:3260 |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
901 |
# 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
|
902 |
# target_lun: 1 |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
903 |
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
|
904 |
data['target_iqn'], |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
905 |
data['target_lun']) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
906 |
# TODO(npower): need to handle CHAP authentication also |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
907 |
elif driver_type == 'fibre_channel': |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
908 |
data = connection_info['data'] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
909 |
target_wwn = data['target_wwn'] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
910 |
# Check for multiple target_wwn values in a list |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
911 |
if isinstance(target_wwn, list): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
912 |
target_wwn = target_wwn[0] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
913 |
# 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
|
914 |
hbas = self._get_fc_hbas() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
915 |
if not hbas: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
916 |
LOG.error(_("Cannot attach Fibre Channel volume '%s' because " |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
917 |
"no Fibre Channel HBA initiators were found") |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
918 |
% (target_wwn)) |
1990
c1c6cc703d7a
18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
1944
diff
changeset
|
919 |
raise exception.InvalidVolume( |
c1c6cc703d7a
18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
1944
diff
changeset
|
920 |
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
|
921 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
922 |
target_lun = data['target_lun'] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
923 |
# 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
|
924 |
# 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
|
925 |
# 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
|
926 |
# a refresh. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
927 |
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
|
928 |
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
|
929 |
'-p', wwpn) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
930 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
931 |
# Use suriadm(1M) to generate a Fibre Channel storage URI. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
932 |
try: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
933 |
out, err = utils.execute('/usr/sbin/suriadm', 'lookup-uri', |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
934 |
'-p', 'target=naa.%s' % target_wwn, |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
935 |
'-p', 'lun=%s' % target_lun) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
936 |
except processutils.ProcessExecutionError as err: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
937 |
LOG.error(_("Lookup failure of Fibre Channel volume '%s', lun " |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
938 |
"%s: %s") % (target_wwn, target_lun, err.stderr)) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
939 |
raise |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
940 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
941 |
lines = out.split('\n') |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
942 |
# Use the long form SURI on the second output line. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
943 |
suri = lines[1].strip() |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
944 |
return suri |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
945 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
946 |
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
|
947 |
"""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
|
948 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
949 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
950 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
951 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
952 |
# 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
|
953 |
zonecfg_items = [ |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
954 |
'bootargs', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
955 |
'brand', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
956 |
'hostid' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
957 |
] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
958 |
if brand == ZONE_BRAND_SOLARIS: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
959 |
zonecfg_items.extend( |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
960 |
['file-mac-profile', 'fs-allowed', 'limitpriv']) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
961 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
962 |
with ZoneConfig(zone) as zc: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
963 |
for key, value in extra_specs.iteritems(): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
964 |
# Ignore not-zonecfg-scoped brand properties. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
965 |
if not key.startswith('zonecfg:'): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
966 |
continue |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
967 |
_scope, prop = key.split(':', 1) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
968 |
# Ignore the 'brand' property if present. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
969 |
if prop == 'brand': |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
970 |
continue |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
971 |
# 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
|
972 |
if prop not in zonecfg_items: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
973 |
LOG.warning(_("Ignoring unsupported zone property '%s' " |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
974 |
"set on flavor for instance '%s'") |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
975 |
% (prop, name)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
976 |
continue |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
977 |
zc.setprop('global', prop, value) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
978 |
|
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
979 |
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
|
980 |
"""Create 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
|
981 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
982 |
vol = self._volume_api.create( |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
983 |
context, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
984 |
instance['root_gb'], |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
985 |
instance['hostname'] + "-" + self._rootzpool_suffix, |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
986 |
"Boot volume for instance '%s' (%s)" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
987 |
% (instance['name'], instance['uuid'])) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
988 |
# 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
|
989 |
# 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
|
990 |
while True: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
991 |
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
|
992 |
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
|
993 |
return volume |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
994 |
greenthread.sleep(1) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
995 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
996 |
except Exception as reason: |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
997 |
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
|
998 |
": %s") % (instance['name'], reason)) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
999 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1000 |
|
5191
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
1001 |
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
|
1002 |
"""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
|
1003 |
instance_uuid = instance['uuid'] |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1004 |
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
|
1005 |
|
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1006 |
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
|
1007 |
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
|
1008 |
context, volume_id, connector) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1009 |
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
|
1010 |
|
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1011 |
# 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
|
1012 |
# 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
|
1013 |
# 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
|
1014 |
# 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
|
1015 |
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
|
1016 |
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
|
1017 |
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
|
1018 |
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
|
1019 |
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
|
1020 |
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
|
1021 |
"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
|
1022 |
"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
|
1023 |
"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
|
1024 |
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
|
1025 |
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
|
1026 |
# 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
|
1027 |
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
|
1028 |
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
|
1029 |
# 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
|
1030 |
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
|
1031 |
# 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
|
1032 |
# 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
|
1033 |
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
|
1034 |
|
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1035 |
# 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
|
1036 |
# 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
|
1037 |
# 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
|
1038 |
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
|
1039 |
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
|
1040 |
"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
|
1041 |
"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
|
1042 |
"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
|
1043 |
"zones.") |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1044 |
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
|
1045 |
# 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
|
1046 |
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
|
1047 |
# 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
|
1048 |
# 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
|
1049 |
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
|
1050 |
"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
|
1051 |
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
|
1052 |
|
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1053 |
# 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
|
1054 |
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
|
1055 |
mountpoint) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1056 |
return connection_info |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1057 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1058 |
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
|
1059 |
"""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
|
1060 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1061 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1062 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1063 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1064 |
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
|
1065 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1066 |
with ZoneConfig(zone) as zc: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1067 |
# 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
|
1068 |
if brand == ZONE_BRAND_SOLARIS_KZ: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1069 |
zc.zone.setResourceProperties( |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1070 |
zonemgr.Resource( |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1071 |
"device", |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1072 |
[zonemgr.Property("bootpri", "0")]), |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1073 |
[zonemgr.Property("storage", suri)]) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1074 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1075 |
zc.addresource( |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1076 |
ROOTZPOOL_RESOURCE, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1077 |
[zonemgr.Property("storage", listvalue=[suri])], |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1078 |
ignore_exists=True) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1079 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1080 |
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
|
1081 |
"""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
|
1082 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1083 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1084 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1085 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1086 |
# 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
|
1087 |
# '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
|
1088 |
if brand == ZONE_BRAND_SOLARIS: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1089 |
vcpu_resource = 'capped-cpu' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1090 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1091 |
vcpu_resource = 'virtual-cpu' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1092 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1093 |
# 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
|
1094 |
# 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
|
1095 |
with ZoneConfig(zone) as zc: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1096 |
zc.setprop(vcpu_resource, 'ncpus', str(vcpus)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1097 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1098 |
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
|
1099 |
"""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
|
1100 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1101 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1102 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1103 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1104 |
# 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
|
1105 |
# '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
|
1106 |
if brand == ZONE_BRAND_SOLARIS: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1107 |
mem_resource = 'swap' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1108 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1109 |
mem_resource = 'physical' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1110 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1111 |
with ZoneConfig(zone) as zc: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1112 |
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
|
1113 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1114 |
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
|
1115 |
sc_dir): |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1116 |
"""add networking information to the zone.""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1117 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1118 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1119 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1120 |
|
5190
fc9c815fce00
20410887 Solaris Nova driver should be resilient when network info is None
david.comay@oracle.com
parents:
4982
diff
changeset
|
1121 |
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
|
1122 |
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
|
1123 |
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
|
1124 |
zc.removeresources("anet", |
fc9c815fce00
20410887 Solaris Nova driver should be resilient when network info is None
david.comay@oracle.com
parents:
4982
diff
changeset
|
1125 |
[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
|
1126 |
else: |
fc9c815fce00
20410887 Solaris Nova driver should be resilient when network info is None
david.comay@oracle.com
parents:
4982
diff
changeset
|
1127 |
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
|
1128 |
return |
fc9c815fce00
20410887 Solaris Nova driver should be resilient when network info is None
david.comay@oracle.com
parents:
4982
diff
changeset
|
1129 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1130 |
tenant_id = None |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1131 |
network_plugin = neutronv2.get_client(context) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1132 |
for netid, network in enumerate(network_info): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1133 |
if tenant_id is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1134 |
tenant_id = network['network']['meta']['tenant_id'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1135 |
port_uuid = network['id'] |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1136 |
port = network_plugin.show_port(port_uuid)['port'] |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1137 |
evs_uuid = port['network_id'] |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1138 |
vport_uuid = port['id'] |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1139 |
ip = network['network']['subnets'][0]['ips'][0]['address'] |
4550
1235ed3c5285
21306943 IP address prefix length is not being set in the network/install service profile
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
4477
diff
changeset
|
1140 |
ip_plen = network['network']['subnets'][0]['cidr'].split('/')[1] |
1235ed3c5285
21306943 IP address prefix length is not being set in the network/install service profile
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
4477
diff
changeset
|
1141 |
ip = '/'.join([ip, ip_plen]) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1142 |
ip_version = network['network']['subnets'][0]['version'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1143 |
route = network['network']['subnets'][0]['gateway']['address'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1144 |
dns_list = network['network']['subnets'][0]['dns'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1145 |
nameservers = [] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1146 |
for dns in dns_list: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1147 |
if dns['type'] == 'dns': |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1148 |
nameservers.append(dns['address']) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1149 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1150 |
with ZoneConfig(zone) as zc: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1151 |
if netid == 0: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1152 |
zc.setprop('anet', 'configure-allowed-address', 'false') |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1153 |
zc.setprop('anet', 'evs', evs_uuid) |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1154 |
zc.setprop('anet', 'vport', vport_uuid) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1155 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1156 |
zc.addresource( |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1157 |
'anet', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1158 |
[zonemgr.Property('configure-allowed-address', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1159 |
'false'), |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1160 |
zonemgr.Property('evs', evs_uuid), |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1161 |
zonemgr.Property('vport', vport_uuid)]) |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1162 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1163 |
filter = [zonemgr.Property('vport', vport_uuid)] |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1164 |
if brand == ZONE_BRAND_SOLARIS: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1165 |
linkname = lookup_resource_property(zc.zone, 'anet', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1166 |
'linkname', filter) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1167 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1168 |
id = lookup_resource_property(zc.zone, 'anet', 'id', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1169 |
filter) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1170 |
linkname = 'net%s' % id |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1171 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1172 |
# create the required sysconfig file (or skip if this is part of a |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1173 |
# resize process) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1174 |
tstate = instance['task_state'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1175 |
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
|
1176 |
task_states.RESIZE_REVERTING, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1177 |
task_states.RESIZE_MIGRATING]: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1178 |
subnet_uuid = port['fixed_ips'][0]['subnet_id'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1179 |
subnet = network_plugin.show_subnet(subnet_uuid)['subnet'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1180 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1181 |
if subnet['enable_dhcp']: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1182 |
tree = sysconfig.create_ncp_defaultfixed('dhcp', linkname, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1183 |
netid, ip_version) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1184 |
else: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1185 |
tree = sysconfig.create_ncp_defaultfixed('static', |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1186 |
linkname, netid, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1187 |
ip_version, ip, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1188 |
route, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1189 |
nameservers) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1190 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1191 |
fp = os.path.join(sc_dir, 'evs-network-%d.xml' % netid) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1192 |
sysconfig.create_sc_profile(fp, tree) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1193 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1194 |
if tenant_id is not None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1195 |
# set the tenant id |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1196 |
with ZoneConfig(zone) as zc: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1197 |
zc.setprop('global', 'tenant', tenant_id) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1198 |
|
4781
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
1199 |
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
|
1200 |
"""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
|
1201 |
""" |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
1202 |
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
|
1203 |
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
|
1204 |
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
|
1205 |
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
|
1206 |
|
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
1207 |
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
|
1208 |
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
|
1209 |
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
|
1210 |
|
4695
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1211 |
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
|
1212 |
"""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
|
1213 |
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
|
1214 |
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
|
1215 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1216 |
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
|
1217 |
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
|
1218 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1219 |
root_account_needed = True |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1220 |
hostname_needed = True |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1221 |
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
|
1222 |
name = instance.get('hostname') |
4695
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1223 |
encrypted_password = None |
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1224 |
|
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1225 |
# 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
|
1226 |
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
|
1227 |
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
|
1228 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1229 |
# find all XML files in sc_dir |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1230 |
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
|
1231 |
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
|
1232 |
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
|
1233 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1234 |
# 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
|
1235 |
if filter(usercheck, fileroot.findall('service')): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1236 |
# 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
|
1237 |
# 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
|
1238 |
# 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
|
1239 |
pgs = fileroot.iter('property_group') |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1240 |
for pg in pgs: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1241 |
if pg.attrib.get('name') == 'root_account': |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1242 |
root_account_needed = False |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1243 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1244 |
# look for identity properties |
1908
702ae3973fcc
18793920 nova traceback when provided multiple SMF profiles
Drew Fisher <drew.fisher@oracle.com>
parents:
1840
diff
changeset
|
1245 |
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
|
1246 |
for props in fileroot.iter('propval'): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1247 |
if props.attrib.get('name') == 'nodename': |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1248 |
hostname_needed = False |
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 |
# 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
|
1251 |
# profile(s) if needed. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1252 |
if root_account_needed: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1253 |
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
|
1254 |
|
4695
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1255 |
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
|
1256 |
# store password for horizon retrieval |
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1257 |
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
|
1258 |
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
|
1259 |
instance.system_metadata.update( |
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1260 |
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
|
1261 |
instance.save() |
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1262 |
|
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1263 |
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
|
1264 |
# 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
|
1265 |
# 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
|
1266 |
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
|
1267 |
sshkey=sshkey, password=encrypted_password) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1268 |
else: |
4695
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1269 |
# 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
|
1270 |
# and password is none |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1271 |
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
|
1272 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1273 |
sysconfig.create_sc_profile(fp, tree) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1274 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1275 |
elif sshkey is not None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1276 |
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
|
1277 |
tree = sysconfig.create_root_ssh_keys(sshkey) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1278 |
sysconfig.create_sc_profile(fp, tree) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1279 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1280 |
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
|
1281 |
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
|
1282 |
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
|
1283 |
|
4695
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1284 |
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
|
1285 |
sc_dir, admin_password=None): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1286 |
"""Create a new Solaris Zone configuration.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1287 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1288 |
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
|
1289 |
raise exception.InstanceExists(name=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1290 |
|
5191
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
1291 |
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
|
1292 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1293 |
# 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
|
1294 |
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
|
1295 |
template = ZONE_BRAND_TEMPLATE.get(brand) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1296 |
# 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
|
1297 |
if template is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1298 |
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
|
1299 |
% (brand, name))) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1300 |
raise exception.NovaException(msg) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1301 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1302 |
tstate = instance['task_state'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1303 |
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
|
1304 |
task_states.RESIZE_REVERTING, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1305 |
task_states.RESIZE_MIGRATING]: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1306 |
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
|
1307 |
if sc_profile is not None: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1308 |
if os.path.isfile(sc_profile): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1309 |
shutil.copy(sc_profile, sc_dir) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1310 |
elif os.path.isdir(sc_profile): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1311 |
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
|
1312 |
'sysconfig')) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1313 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1314 |
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
|
1315 |
|
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
1316 |
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
|
1317 |
% (name, instance['display_name'])) |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1318 |
zonemanager = self.rad_connection.get_object(zonemgr.ZoneManager()) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1319 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1320 |
zonemanager.create(name, None, template) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1321 |
self._set_global_properties(name, extra_specs, brand) |
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
1322 |
if connection_info is not None: |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1323 |
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
|
1324 |
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
|
1325 |
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
|
1326 |
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
|
1327 |
sc_dir) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1328 |
except Exception as reason: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1329 |
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
|
1330 |
"zonemgr(3RAD): %s") % (name, reason)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1331 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1332 |
|
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1333 |
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
|
1334 |
"""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
|
1335 |
# 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
|
1336 |
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
|
1337 |
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
|
1338 |
"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
|
1339 |
"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
|
1340 |
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
|
1341 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1342 |
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
|
1343 |
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
|
1344 |
"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
|
1345 |
"terminal/xterm'") % XTERM_PATH) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1346 |
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
|
1347 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1348 |
name = instance['name'] |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1349 |
# 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
|
1350 |
try: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1351 |
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
|
1352 |
VNC_CONSOLE_BASE_FMRI, 'add', name) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1353 |
except processutils.ProcessExecutionError as err: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1354 |
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
|
1355 |
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
|
1356 |
"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
|
1357 |
return |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1358 |
else: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1359 |
LOG.error(_("Unable to create 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
|
1360 |
"'{0}': {1}").format( |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1361 |
VNC_CONSOLE_BASE_FMRI + ':' + name, err)) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1362 |
raise |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1363 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1364 |
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
|
1365 |
"""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
|
1366 |
name = instance['name'] |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1367 |
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
|
1368 |
# 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
|
1369 |
try: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1370 |
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
|
1371 |
VNC_CONSOLE_BASE_FMRI, 'delete', name) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1372 |
except processutils.ProcessExecutionError as err: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1373 |
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
|
1374 |
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
|
1375 |
"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
|
1376 |
% name) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1377 |
return |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1378 |
else: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1379 |
LOG.error(_("Unable to delete 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
|
1380 |
"'%s': %s") |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1381 |
% (VNC_CONSOLE_BASE_FMRI + ':' + name, err)) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1382 |
raise |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1383 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1384 |
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
|
1385 |
"""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
|
1386 |
name = instance['name'] |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1387 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1388 |
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
|
1389 |
# 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
|
1390 |
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
|
1391 |
# 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
|
1392 |
# 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
|
1393 |
# 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
|
1394 |
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
|
1395 |
'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
|
1396 |
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
|
1397 |
'refresh') |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1398 |
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
|
1399 |
console_fmri) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1400 |
except processutils.ProcessExecutionError as err: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1401 |
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
|
1402 |
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
|
1403 |
"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
|
1404 |
% name) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1405 |
LOG.error(_("Unable to start 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
|
1406 |
"'%s': %s") % (console_fmri, err)) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1407 |
raise |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1408 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1409 |
# 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
|
1410 |
greenthread.sleep(2) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1411 |
while True: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1412 |
try: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1413 |
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
|
1414 |
console_fmri) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1415 |
state = out.strip() |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1416 |
if state == 'online': |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1417 |
break |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1418 |
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
|
1419 |
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
|
1420 |
"'%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
|
1421 |
% (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
|
1422 |
raise exception.ConsoleNotFoundForInstance( |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1423 |
instance_uuid=instance['uuid']) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1424 |
# 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
|
1425 |
# 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
|
1426 |
greenthread.sleep(2) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1427 |
except processutils.ProcessExecutionError as err: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1428 |
LOG.error(_("Error querying state of zone VNC console SMF " |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1429 |
"service '%s': %s") % (console_fmri, err)) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1430 |
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
|
1431 |
# 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
|
1432 |
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
|
1433 |
# 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
|
1434 |
# 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
|
1435 |
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
|
1436 |
'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
|
1437 |
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
|
1438 |
'refresh') |
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
1439 |
except processutils.ProcessExecutionError as err: |
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
1440 |
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
|
1441 |
"zone VNC console SMF service " |
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
1442 |
"'%s': %s") % (console_fmri, err)) |
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
1443 |
raise |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1444 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1445 |
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
|
1446 |
"""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
|
1447 |
name = instance['name'] |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1448 |
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
|
1449 |
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
|
1450 |
"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
|
1451 |
return |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1452 |
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
|
1453 |
# 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
|
1454 |
try: |
4692
c1143cad49f2
21439855 Console SMF instance remains after nova instance is deleted
Niall Power <niall.power@oracle.com>
parents:
4671
diff
changeset
|
1455 |
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
|
1456 |
console_fmri) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1457 |
except processutils.ProcessExecutionError as err: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1458 |
LOG.error(_("Unable to disable 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
|
1459 |
"'%s': %s") % (console_fmri, err)) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1460 |
# 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
|
1461 |
# 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
|
1462 |
# 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
|
1463 |
try: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1464 |
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
|
1465 |
'refresh') |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1466 |
except processutils.ProcessExecutionError as err: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1467 |
LOG.error(_("Unable to refresh 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
|
1468 |
"'%s': %s") % (console_fmri, err)) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1469 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1470 |
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
|
1471 |
"""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
|
1472 |
name = instance['name'] |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1473 |
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
|
1474 |
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
|
1475 |
"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
|
1476 |
% name) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1477 |
return None |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1478 |
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
|
1479 |
# 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
|
1480 |
try: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1481 |
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
|
1482 |
console_fmri) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1483 |
return state.strip() |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1484 |
except processutils.ProcessExecutionError as err: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1485 |
LOG.error(_("Console state request failed for zone VNC console " |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1486 |
"SMF service for instance '%s': %s") % (name, err)) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1487 |
raise |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1488 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1489 |
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
|
1490 |
"""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
|
1491 |
name = instance['name'] |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1492 |
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
|
1493 |
# 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
|
1494 |
try: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1495 |
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
|
1496 |
console_fmri) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1497 |
return True |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1498 |
except processutils.ProcessExecutionError as err: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1499 |
return False |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1500 |
|
5191
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
1501 |
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
|
1502 |
"""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
|
1503 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1504 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1505 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1506 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1507 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1508 |
# log the zone's configuration |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1509 |
with ZoneConfig(zone) as zc: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1510 |
LOG.debug("-" * 80) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1511 |
LOG.debug(zc.zone.exportConfig(True)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1512 |
LOG.debug("-" * 80) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1513 |
|
4832
eef9ea54fabe
21761279 Driver erroneously includes trailing space in zone.install() arguments
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4781
diff
changeset
|
1514 |
options = ['-a', image] |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1515 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1516 |
if os.listdir(sc_dir): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1517 |
# 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
|
1518 |
options.extend(['-c', sc_dir]) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1519 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1520 |
try: |
5193
3120ba36a435
22195615 sysconfig temporary directory not always cleaned up
david.comay@oracle.com
parents:
5192
diff
changeset
|
1521 |
LOG.debug(_("Installing instance '%s' (%s)") % |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1522 |
(name, instance['display_name'])) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1523 |
zone.install(options=options) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1524 |
except Exception as reason: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1525 |
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
|
1526 |
"via zonemgr(3RAD): %s") % (name, reason)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1527 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1528 |
|
5193
3120ba36a435
22195615 sysconfig temporary directory not always cleaned up
david.comay@oracle.com
parents:
5192
diff
changeset
|
1529 |
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
|
1530 |
(name, instance['display_name'])) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1531 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1532 |
def _power_on(self, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1533 |
"""Power on a Solaris Zone.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1534 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1535 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1536 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1537 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1538 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1539 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1540 |
zone.boot() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1541 |
except Exception as reason: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1542 |
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
|
1543 |
"%s") % (name, reason)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1544 |
raise exception.InstancePowerOnFailure(reason=reason) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1545 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1546 |
def _uninstall(self, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1547 |
"""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
|
1548 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1549 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1550 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1551 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1552 |
|
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1553 |
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
|
1554 |
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
|
1555 |
% (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
|
1556 |
return |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1557 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1558 |
zone.uninstall(['-F']) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1559 |
except Exception as reason: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1560 |
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
|
1561 |
"'%s' via zonemgr(3RAD): %s") % (name, reason)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1562 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1563 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1564 |
def _delete_config(self, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1565 |
"""Delete an existing Solaris Zone configuration.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1566 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1567 |
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
|
1568 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1569 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1570 |
zonemanager = self.rad_connection.get_object(zonemgr.ZoneManager()) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1571 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1572 |
zonemanager.delete(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1573 |
except Exception as reason: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1574 |
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
|
1575 |
"zonemgr(3RAD): %s") % (name, reason)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1576 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1577 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1578 |
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
|
1579 |
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
|
1580 |
"""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
|
1581 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1582 |
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
|
1583 |
running (power_state.RUNNING). |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1584 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1585 |
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
|
1586 |
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
|
1587 |
that it was before this call began. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1588 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1589 |
:param context: security context |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1590 |
:param instance: nova.objects.instance.Instance |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1591 |
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
|
1592 |
the creation of the new instance. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1593 |
: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
|
1594 |
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
|
1595 |
: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
|
1596 |
: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
|
1597 |
:param network_info: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1598 |
: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
|
1599 |
: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
|
1600 |
attached to the instance. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1601 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1602 |
image = self._fetch_image(context, instance) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1603 |
self._validate_image(image, instance) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1604 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1605 |
# create a new directory for SC profiles |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1606 |
sc_dir = tempfile.mkdtemp(prefix="nova-sysconfig-", |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1607 |
dir=CONF.state_path) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1608 |
os.chmod(sc_dir, 0755) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1609 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1610 |
# 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
|
1611 |
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
|
1612 |
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
|
1613 |
# 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
|
1614 |
# 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
|
1615 |
mountpoint = "c1d0" |
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
1616 |
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
|
1617 |
try: |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1618 |
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
|
1619 |
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
|
1620 |
except exception.InvalidVolume as badvol: |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1621 |
# 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
|
1622 |
# 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
|
1623 |
# 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
|
1624 |
LOG.warning(_("Volume '%s' is being discarded: %s") |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1625 |
% (volume_id, badvol)) |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1626 |
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
|
1627 |
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
|
1628 |
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
|
1629 |
# 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
|
1630 |
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
|
1631 |
"%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
|
1632 |
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
|
1633 |
# remove the sc_profile temp directory |
3120ba36a435
22195615 sysconfig temporary directory not always cleaned up
david.comay@oracle.com
parents:
5192
diff
changeset
|
1634 |
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
|
1635 |
raise |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1636 |
|
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
1637 |
configured = False |
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
1638 |
installed = False |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1639 |
try: |
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
1640 |
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
|
1641 |
connection_info, sc_dir, admin_password) |
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
1642 |
configured = True |
5191
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
1643 |
self._install(instance, image, sc_dir) |
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
1644 |
installed = True |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1645 |
self._power_on(instance) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1646 |
except Exception as reason: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1647 |
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
|
1648 |
% (name, reason)) |
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
1649 |
if installed: |
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
1650 |
self._uninstall(instance) |
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
1651 |
if configured: |
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
1652 |
self._delete_config(instance) |
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
1653 |
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
|
1654 |
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
|
1655 |
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
|
1656 |
raise |
5193
3120ba36a435
22195615 sysconfig temporary directory not always cleaned up
david.comay@oracle.com
parents:
5192
diff
changeset
|
1657 |
finally: |
3120ba36a435
22195615 sysconfig temporary directory not always cleaned up
david.comay@oracle.com
parents:
5192
diff
changeset
|
1658 |
# remove the sc_profile temp directory |
3120ba36a435
22195615 sysconfig temporary directory not always cleaned up
david.comay@oracle.com
parents:
5192
diff
changeset
|
1659 |
shutil.rmtree(sc_dir) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1660 |
|
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
1661 |
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
|
1662 |
bdm = objects.BlockDeviceMapping( |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1663 |
source_type='volume', |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1664 |
destination_type='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
|
1665 |
instance_uuid=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
|
1666 |
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
|
1667 |
connection_info=jsonutils.dumps(connection_info), |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1668 |
device_name=mountpoint, |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1669 |
delete_on_termination=True, |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1670 |
volume_size=instance['root_gb']) |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1671 |
bdm.create(context) |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1672 |
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
|
1673 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1674 |
def _power_off(self, instance, halt_type): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1675 |
"""Power off a Solaris Zone.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1676 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1677 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1678 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1679 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1680 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1681 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1682 |
if halt_type == 'SOFT': |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1683 |
zone.shutdown() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1684 |
else: |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1685 |
# '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
|
1686 |
zone.halt() |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1687 |
except rad.client.ObjectError as reason: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1688 |
result = reason.get_payload() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1689 |
if result.code == zonemgr.ErrorCode.COMMAND_ERROR: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1690 |
LOG.warning(_("Ignoring command error returned while trying " |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1691 |
"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
|
1692 |
"%s" % (name, reason))) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1693 |
return |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1694 |
except Exception as reason: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1695 |
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
|
1696 |
"%s") % (name, reason)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1697 |
raise exception.InstancePowerOffFailure(reason=reason) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1698 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1699 |
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
|
1700 |
block_device_info): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1701 |
"""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
|
1702 |
""" |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1703 |
self.power_off(instance) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1704 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1705 |
inst_type = flavor_obj.Flavor.get_by_id( |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1706 |
nova_context.get_admin_context(read_deleted='yes'), |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1707 |
instance['instance_type_id']) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1708 |
extra_specs = inst_type['extra_specs'].copy() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1709 |
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
|
1710 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1711 |
name = instance['name'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1712 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1713 |
cpu = int(instance.system_metadata['old_instance_type_vcpus']) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1714 |
mem = int(instance.system_metadata['old_instance_type_memory_mb']) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1715 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1716 |
self._set_num_cpu(name, cpu, brand) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1717 |
self._set_memory_cap(name, mem, brand) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1718 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1719 |
rgb = int(instance.system_metadata['new_instance_type_root_gb']) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1720 |
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
|
1721 |
if old_rvid: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1722 |
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
|
1723 |
newvname = instance['display_name'] + "-" + self._rootzpool_suffix |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1724 |
mount_dev = instance['root_device_name'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1725 |
del instance.system_metadata['new_instance_volid'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1726 |
del instance.system_metadata['old_instance_volid'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1727 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1728 |
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
|
1729 |
rgb, mount_dev) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1730 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1731 |
self._volume_api.delete(context, new_rvid) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1732 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1733 |
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
|
1734 |
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
|
1735 |
"""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
|
1736 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1737 |
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
|
1738 |
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
|
1739 |
warning in that case. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1740 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1741 |
:param context: security context |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1742 |
: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
|
1743 |
:param network_info: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1744 |
: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
|
1745 |
: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
|
1746 |
be detached from the instance. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1747 |
: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
|
1748 |
:param migrate_data: implementation specific params |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1749 |
""" |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1750 |
if (instance['task_state'] == task_states.RESIZE_REVERTING and |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1751 |
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
|
1752 |
self._samehost_revert_resize(context, instance, network_info, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1753 |
block_device_info) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1754 |
return |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1755 |
|
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1756 |
try: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1757 |
# 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
|
1758 |
# 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
|
1759 |
# proceed. |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1760 |
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
|
1761 |
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
|
1762 |
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
|
1763 |
except Exception: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1764 |
pass |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1765 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1766 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1767 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1768 |
# If instance cannot be found, just return. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1769 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1770 |
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
|
1771 |
% name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1772 |
return |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1773 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1774 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1775 |
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
|
1776 |
self._power_off(instance, 'HARD') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1777 |
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
|
1778 |
self._uninstall(instance) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1779 |
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
|
1780 |
self._delete_config(instance) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1781 |
except Exception as reason: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1782 |
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
|
1783 |
"%s") % (name, reason)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1784 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1785 |
# 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
|
1786 |
# during a resize operation we want to make sure the cinder volumes are |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1787 |
# property cleaned up. We need to do this here, because the periodic |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1788 |
# 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
|
1789 |
# 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
|
1790 |
# 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
|
1791 |
# 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
|
1792 |
# 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
|
1793 |
# 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
|
1794 |
# |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1795 |
# 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
|
1796 |
# 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
|
1797 |
# finish_revert_migration. |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1798 |
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
|
1799 |
return |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1800 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1801 |
tags = ['old_instance_volid', 'new_instance_volid'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1802 |
for tag in tags: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1803 |
volid = instance.system_metadata.get(tag) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1804 |
if volid: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1805 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1806 |
LOG.debug(_("Deleting volume %s"), volid) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1807 |
self._volume_api.delete(context, volid) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1808 |
del instance.system_metadata[tag] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1809 |
except Exception: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1810 |
pass |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1811 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1812 |
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
|
1813 |
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
|
1814 |
"""Cleanup the instance resources . |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1815 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1816 |
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
|
1817 |
this method. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1818 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1819 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1820 |
: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
|
1821 |
:param network_info: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1822 |
: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
|
1823 |
: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
|
1824 |
be detached from the instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1825 |
: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
|
1826 |
: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
|
1827 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1828 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1829 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1830 |
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
|
1831 |
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
|
1832 |
"""Reboot the specified instance. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1833 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1834 |
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
|
1835 |
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
|
1836 |
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
|
1837 |
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
|
1838 |
is paused or halted/stopped. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1839 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1840 |
:param instance: nova.objects.instance.Instance |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1841 |
:param network_info: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1842 |
: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
|
1843 |
: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
|
1844 |
: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
|
1845 |
: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
|
1846 |
encountered |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1847 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1848 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1849 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1850 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1851 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1852 |
|
1990
c1c6cc703d7a
18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
1944
diff
changeset
|
1853 |
if self._get_state(zone) == power_state.SHUTDOWN: |
c1c6cc703d7a
18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
1944
diff
changeset
|
1854 |
self._power_on(instance) |
c1c6cc703d7a
18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
1944
diff
changeset
|
1855 |
return |
c1c6cc703d7a
18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
1944
diff
changeset
|
1856 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1857 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1858 |
if reboot_type == 'SOFT': |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1859 |
zone.shutdown(['-r']) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1860 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1861 |
zone.reboot() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1862 |
except Exception as reason: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1863 |
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
|
1864 |
% (name, reason)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1865 |
raise exception.InstanceRebootFailure(reason=reason) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1866 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1867 |
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
|
1868 |
# 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
|
1869 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1870 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1871 |
def _get_console_output(self, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1872 |
"""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
|
1873 |
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
|
1874 |
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
|
1875 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1876 |
console_str = "" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1877 |
avail = MAX_CONSOLE_BYTES |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1878 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1879 |
# 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
|
1880 |
# 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
|
1881 |
# 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
|
1882 |
# 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
|
1883 |
# 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
|
1884 |
# 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
|
1885 |
# 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
|
1886 |
# 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
|
1887 |
# 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
|
1888 |
# 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
|
1889 |
# far and the result returned. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1890 |
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
|
1891 |
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
|
1892 |
reverse=True) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1893 |
for file in logfiles: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1894 |
size = os.path.getsize(file) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1895 |
if size == 0: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1896 |
continue |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1897 |
avail -= size |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1898 |
with open(file, 'r') as log: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1899 |
if avail < 0: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1900 |
(fragment, _) = utils.last_bytes(log, avail + size) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1901 |
remainder = fragment.find('\n') + 1 |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1902 |
console_str = fragment[remainder:] + console_str |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1903 |
break |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1904 |
fragment = '' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1905 |
for line in log.readlines(): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1906 |
fragment += line |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1907 |
console_str = fragment + console_str |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1908 |
return console_str |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1909 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1910 |
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
|
1911 |
"""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
|
1912 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1913 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1914 |
: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
|
1915 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1916 |
return self._get_console_output(instance) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1917 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1918 |
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
|
1919 |
"""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
|
1920 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1921 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1922 |
: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
|
1923 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1924 |
: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
|
1925 |
""" |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1926 |
# 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
|
1927 |
# 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
|
1928 |
# 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
|
1929 |
name = instance['name'] |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1930 |
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
|
1931 |
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
|
1932 |
"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
|
1933 |
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
|
1934 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1935 |
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
|
1936 |
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
|
1937 |
"instance '%s'") % name) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1938 |
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
|
1939 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1940 |
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
|
1941 |
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
|
1942 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1943 |
# 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
|
1944 |
# 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
|
1945 |
# 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
|
1946 |
# 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
|
1947 |
try: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1948 |
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
|
1949 |
'refresh') |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1950 |
except processutils.ProcessExecutionError as err: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1951 |
LOG.error(_("Unable to refresh 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
|
1952 |
"'%s': %s" % (console_fmri, err))) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1953 |
raise |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1954 |
|
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
|
1955 |
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
|
1956 |
try: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1957 |
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
|
1958 |
console_fmri) |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1959 |
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
|
1960 |
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
|
1961 |
port=port, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1962 |
internal_access_path=None) |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1963 |
except processutils.ProcessExecutionError as err: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1964 |
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
|
1965 |
"console SMF service '%s': %s" |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1966 |
% (console_fmri, err))) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1967 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1968 |
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
|
1969 |
"""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
|
1970 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1971 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1972 |
: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
|
1973 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1974 |
: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
|
1975 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1976 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1977 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1978 |
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
|
1979 |
"""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
|
1980 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1981 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1982 |
: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
|
1983 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1984 |
: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
|
1985 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1986 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1987 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1988 |
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
|
1989 |
"""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
|
1990 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1991 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1992 |
: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
|
1993 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1994 |
: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
|
1995 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1996 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1997 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1998 |
def _get_zone_diagnostics(self, zone): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1999 |
"""Return data about Solaris Zone diagnostics.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2000 |
if zone.id == -1: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2001 |
return None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2002 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2003 |
diagnostics = {} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2004 |
id = str(zone.id) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2005 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2006 |
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
|
2007 |
''.join(('lockedmem_zone_', id))) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2008 |
if kstat_data is not None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2009 |
diagnostics['lockedmem'] = kstat_data['usage'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2010 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2011 |
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
|
2012 |
''.join(('nprocs_zone_', id))) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2013 |
if kstat_data is not None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2014 |
diagnostics['nprocs'] = kstat_data['usage'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2015 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2016 |
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
|
2017 |
''.join(('swapresv_zone_', id))) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2018 |
if kstat_data is not None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2019 |
diagnostics['swapresv'] = kstat_data['usage'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2020 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2021 |
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
|
2022 |
'sys_zone_aggr') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2023 |
if kstat_data is not None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2024 |
for key in kstat_data.keys(): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2025 |
if key not in ('class', 'crtime', 'snaptime'): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2026 |
diagnostics[key] = kstat_data[key] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2027 |
return diagnostics |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2028 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2029 |
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
|
2030 |
"""Return data about VM diagnostics. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2031 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2032 |
: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
|
2033 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2034 |
# 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
|
2035 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2036 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2037 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2038 |
LOG.error(_("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
|
2039 |
% name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2040 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2041 |
return self._get_zone_diagnostics(zone) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2042 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2043 |
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
|
2044 |
"""Return data about VM diagnostics. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2045 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2046 |
: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
|
2047 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2048 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2049 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2050 |
def get_all_bw_counters(self, instances): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2051 |
"""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
|
2052 |
running VM. |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2053 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2054 |
: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
|
2055 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2056 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2057 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2058 |
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
|
2059 |
"""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
|
2060 |
a given host.- |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2061 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2062 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2063 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2064 |
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
|
2065 |
"""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
|
2066 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2067 |
# 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
|
2068 |
return CONF.my_ip |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2069 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2070 |
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
|
2071 |
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
|
2072 |
"""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
|
2073 |
# 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
|
2074 |
# 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
|
2075 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2076 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2077 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2078 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2079 |
|
5191
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2080 |
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
|
2081 |
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
|
2082 |
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
|
2083 |
# 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
|
2084 |
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
|
2085 |
% brand) |
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2086 |
raise NotImplementedError(reason) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2087 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2088 |
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
|
2089 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2090 |
with ZoneConfig(zone) as zc: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2091 |
zc.addresource("device", [zonemgr.Property("storage", suri)]) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2092 |
|
4671
d08190e626f1
20867780 Nova should support LZR for block devices
Drew Fisher <drew.fisher@oracle.com>
parents:
4669
diff
changeset
|
2093 |
# 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
|
2094 |
if zone.state == ZONE_STATE_RUNNING: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2095 |
zone.apply() |
4671
d08190e626f1
20867780 Nova should support LZR for block devices
Drew Fisher <drew.fisher@oracle.com>
parents:
4669
diff
changeset
|
2096 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2097 |
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
|
2098 |
encryption=None): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2099 |
"""Detach the disk attached to the instance.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2100 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2101 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2102 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2103 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2104 |
|
5191
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2105 |
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
|
2106 |
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
|
2107 |
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
|
2108 |
# 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
|
2109 |
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
|
2110 |
% brand) |
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2111 |
raise NotImplementedError(reason) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2112 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2113 |
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
|
2114 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2115 |
# Check if the specific property value exists before attempting removal |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2116 |
prop = lookup_resource_property_value(zone, "device", "storage", suri) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2117 |
if not prop: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2118 |
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
|
2119 |
"'%s'") % (suri, name)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2120 |
return |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2121 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2122 |
with ZoneConfig(zone) as zc: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2123 |
zc.removeresources("device", [zonemgr.Property("storage", suri)]) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2124 |
|
4671
d08190e626f1
20867780 Nova should support LZR for block devices
Drew Fisher <drew.fisher@oracle.com>
parents:
4669
diff
changeset
|
2125 |
# 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
|
2126 |
if zone.state == ZONE_STATE_RUNNING: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2127 |
zone.apply() |
4671
d08190e626f1
20867780 Nova should support LZR for block devices
Drew Fisher <drew.fisher@oracle.com>
parents:
4669
diff
changeset
|
2128 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2129 |
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
|
2130 |
instance, mountpoint, resize_to): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2131 |
"""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
|
2132 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2133 |
: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
|
2134 |
: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
|
2135 |
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
|
2136 |
And the units is Gigabyte. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2137 |
""" |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2138 |
raise NotImplementedError() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2139 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2140 |
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
|
2141 |
"""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
|
2142 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2143 |
: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
|
2144 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2145 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2146 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2147 |
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
|
2148 |
"""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
|
2149 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2150 |
: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
|
2151 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2152 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2153 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2154 |
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
|
2155 |
"""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
|
2156 |
hold the new root disk |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2157 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2158 |
: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
|
2159 |
: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
|
2160 |
: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
|
2161 |
""" |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2162 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2163 |
self._volume_api.delete(context, volume['id']) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2164 |
except Exception as err: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2165 |
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
|
2166 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2167 |
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
|
2168 |
flavor, network_info, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2169 |
block_device_info=None, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2170 |
timeout=0, retry_interval=0): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2171 |
"""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
|
2172 |
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
|
2173 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2174 |
: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
|
2175 |
: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
|
2176 |
: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
|
2177 |
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
|
2178 |
""" |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2179 |
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
|
2180 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2181 |
samehost = (dest == self.get_host_ip_addr()) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2182 |
inst_type = flavor_obj.Flavor.get_by_id( |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2183 |
nova_context.get_admin_context(read_deleted='yes'), |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2184 |
instance['instance_type_id']) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2185 |
extra_specs = inst_type['extra_specs'].copy() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2186 |
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
|
2187 |
if brand != ZONE_BRAND_SOLARIS_KZ and not samehost: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2188 |
msg = (_("'%s' branded zones do not currently support " |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2189 |
"resize to a different host.") % brand) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2190 |
raise exception.MigrationPreCheckError(reason=msg) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2191 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2192 |
if brand != flavor['extra_specs'].get('zonecfg:brand'): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2193 |
msg = (_("Unable to change brand of zone during resize.")) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2194 |
raise exception.MigrationPreCheckError(reason=msg) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2195 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2196 |
orgb = instance['root_gb'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2197 |
nrgb = int(instance.system_metadata['new_instance_type_root_gb']) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2198 |
if orgb > nrgb: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2199 |
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
|
2200 |
raise exception.ResizeError(reason=msg) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2201 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2202 |
self.power_off(instance, timeout, retry_interval) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2203 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2204 |
disk_info = None |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2205 |
if nrgb > orgb or not samehost: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2206 |
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
|
2207 |
rootmp = instance.root_device_name |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2208 |
for entry in bmap: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2209 |
mountdev = entry['mount_device'].rpartition('/')[2] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2210 |
if mountdev == rootmp: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2211 |
root_ci = entry['connection_info'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2212 |
break |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2213 |
else: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2214 |
# 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
|
2215 |
# 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
|
2216 |
# 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
|
2217 |
if samehost and brand == ZONE_BRAND_SOLARIS: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2218 |
return disk_info |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2219 |
else: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2220 |
msg = (_("Cannot find an attached root device.")) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2221 |
raise exception.ResizeError(reason=msg) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2222 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2223 |
if root_ci['driver_volume_type'] == 'iscsi': |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2224 |
volume_id = root_ci['data']['volume_id'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2225 |
else: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2226 |
volume_id = root_ci['serial'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2227 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2228 |
if volume_id is None: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2229 |
msg = (_("Cannot find an attached root device.")) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2230 |
raise exception.ResizeError(reason=msg) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2231 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2232 |
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
|
2233 |
newvolume = self._volume_api.create(context, orgb, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2234 |
vinfo['display_name'] + |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2235 |
'-resized', |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2236 |
vinfo['display_description'], |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2237 |
source_volume=vinfo) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2238 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2239 |
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
|
2240 |
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
|
2241 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2242 |
# 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
|
2243 |
# 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
|
2244 |
while True: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2245 |
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
|
2246 |
if volume['status'] != 'creating': |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2247 |
break |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2248 |
greenthread.sleep(1) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2249 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2250 |
if nrgb > orgb: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2251 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2252 |
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
|
2253 |
except Exception: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2254 |
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
|
2255 |
self._cleanup_migrate_disk(context, instance, newvolume) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2256 |
raise |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2257 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2258 |
disk_info = newvolume |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2259 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2260 |
return disk_info |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2261 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2262 |
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
|
2263 |
"""Snapshots the specified instance. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2264 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2265 |
:param context: security context |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2266 |
:param instance: nova.objects.instance.Instance |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2267 |
: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
|
2268 |
hold the snapshot. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2269 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2270 |
# Get original base image info |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2271 |
(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
|
2272 |
context, instance['image_ref']) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2273 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2274 |
base = base_service.show(context, base_id) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2275 |
except exception.ImageNotFound: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2276 |
base = {} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2277 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2278 |
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
|
2279 |
context, image_id) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2280 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2281 |
# Build updated snapshot image metadata |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2282 |
snapshot = snapshot_service.show(context, snapshot_id) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2283 |
metadata = { |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2284 |
'is_public': False, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2285 |
'status': 'active', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2286 |
'name': snapshot['name'], |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2287 |
'properties': { |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2288 |
'image_location': 'snapshot', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2289 |
'image_state': 'available', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2290 |
'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
|
2291 |
'instance_uuid': instance['uuid'], |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2292 |
} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2293 |
} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2294 |
# 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
|
2295 |
# image. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2296 |
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
|
2297 |
if prop in base.get('properties', {}): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2298 |
base_prop = base['properties'][prop] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2299 |
metadata['properties'][prop] = base_prop |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2300 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2301 |
# Set generic container and disk formats initially in case the glance |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2302 |
# service rejects unified archives (uar) and zfs in metadata |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2303 |
metadata['container_format'] = 'ovf' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2304 |
metadata['disk_format'] = 'raw' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2305 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2306 |
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
|
2307 |
snapshot_directory = CONF.solariszones_snapshots_directory |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2308 |
fileutils.ensure_tree(snapshot_directory) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2309 |
snapshot_name = uuid.uuid4().hex |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2310 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2311 |
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
|
2312 |
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
|
2313 |
zone_name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2314 |
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
|
2315 |
'-z', zone_name, out_path) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2316 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2317 |
LOG.info(_("Snapshot extracted, beginning image upload"), |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2318 |
instance=instance) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2319 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2320 |
# 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
|
2321 |
update_task_state( |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2322 |
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
|
2323 |
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
|
2324 |
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
|
2325 |
snapshot_service.update(context, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2326 |
image_id, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2327 |
metadata, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2328 |
image_file) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2329 |
LOG.info(_("Snapshot image upload complete"), |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2330 |
instance=instance) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2331 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2332 |
# 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
|
2333 |
# 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
|
2334 |
# glance server recognises them. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2335 |
metadata['container_format'] = 'uar' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2336 |
metadata['disk_format'] = 'zfs' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2337 |
snapshot_service.update(context, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2338 |
image_id, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2339 |
metadata, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2340 |
None) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2341 |
except exception.Invalid as invalid: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2342 |
LOG.warning(_("Image service rejected image metadata " |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2343 |
"container and disk formats 'uar' and " |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2344 |
"'zfs'. Using generic values 'ovf' and " |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2345 |
"'raw' as fallbacks.")) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2346 |
finally: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2347 |
# Delete the snapshot image file source |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2348 |
os.unlink(out_path) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2349 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2350 |
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
|
2351 |
"""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
|
2352 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2353 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2354 |
: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
|
2355 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2356 |
pass |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2357 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2358 |
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
|
2359 |
network_info, samehost): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2360 |
"""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
|
2361 |
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
|
2362 |
resources. |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2363 |
""" |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2364 |
if disk_info: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2365 |
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
|
2366 |
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
|
2367 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2368 |
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
|
2369 |
if old_rvid: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2370 |
connector = self.get_volume_connector(instance) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2371 |
connection_info = self._volume_api.initialize_connection( |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2372 |
context, old_rvid, connector) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2373 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2374 |
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
|
2375 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2376 |
rootmp = instance.root_device_name |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2377 |
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
|
2378 |
rootmp) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2379 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2380 |
bdmobj = objects.BlockDeviceMapping() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2381 |
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
|
2382 |
bdm['connection_info'] = jsonutils.dumps(connection_info) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2383 |
bdm['volume_id'] = old_rvid |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2384 |
bdm.save() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2385 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2386 |
del instance.system_metadata['new_instance_volid'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2387 |
del instance.system_metadata['old_instance_volid'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2388 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2389 |
if not samehost: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2390 |
self.destroy(context, instance, network_info) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2391 |
instance['host'] = instance['launched_on'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2392 |
instance['node'] = instance['launched_on'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2393 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2394 |
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
|
2395 |
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
|
2396 |
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
|
2397 |
"""Completes a resize. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2398 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2399 |
: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
|
2400 |
: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
|
2401 |
: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
|
2402 |
: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
|
2403 |
:param network_info: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2404 |
: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
|
2405 |
: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
|
2406 |
defines the image from which this instance |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2407 |
was created |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2408 |
: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
|
2409 |
False otherwise |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2410 |
: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
|
2411 |
: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
|
2412 |
otherwise |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2413 |
""" |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2414 |
if not resize_instance: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2415 |
raise NotImplementedError() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2416 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2417 |
samehost = (migration['dest_node'] == migration['source_node']) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2418 |
if samehost: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2419 |
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
|
2420 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2421 |
inst_type = flavor_obj.Flavor.get_by_id( |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2422 |
nova_context.get_admin_context(read_deleted='yes'), |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2423 |
instance['instance_type_id']) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2424 |
extra_specs = inst_type['extra_specs'].copy() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2425 |
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
|
2426 |
name = instance['name'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2427 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2428 |
if disk_info: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2429 |
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
|
2430 |
rootmp = instance['root_device_name'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2431 |
for entry in bmap: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2432 |
if entry['mount_device'] == rootmp: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2433 |
mount_dev = entry['mount_device'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2434 |
root_ci = entry['connection_info'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2435 |
break |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2436 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2437 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2438 |
if samehost: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2439 |
metadstr = 'new_instance_type_vcpus' |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2440 |
cpu = int(instance.system_metadata[metadstr]) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2441 |
metadstr = 'new_instance_type_memory_mb' |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2442 |
mem = int(instance.system_metadata[metadstr]) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2443 |
self._set_num_cpu(name, cpu, brand) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2444 |
self._set_memory_cap(name, mem, brand) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2445 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2446 |
# 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
|
2447 |
# changed |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2448 |
if disk_info: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2449 |
metadstr = 'new_instance_type_root_gb' |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2450 |
rgb = int(instance.system_metadata[metadstr]) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2451 |
self._resize_disk_migration(context, instance, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2452 |
root_ci['serial'], |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2453 |
disk_info['id'], |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2454 |
rgb, mount_dev) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2455 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2456 |
else: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2457 |
# 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
|
2458 |
# 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
|
2459 |
mount_dev = 'c1d0' |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2460 |
root_serial = root_ci['serial'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2461 |
connection_info = self._resize_disk_migration(context, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2462 |
instance, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2463 |
root_serial, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2464 |
disk_info['id'], |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2465 |
0, mount_dev, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2466 |
samehost) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2467 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2468 |
self._create_config(context, instance, network_info, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2469 |
connection_info, extra_specs, None) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2470 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2471 |
zone = self._get_zone_by_name(name) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2472 |
if zone is None: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2473 |
raise exception.InstanceNotFound(instance_id=name) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2474 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2475 |
zone.attach(['-x', 'initialize-hostdata']) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2476 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2477 |
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
|
2478 |
for entry in bmap: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2479 |
if entry['mount_device'] != rootmp: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2480 |
self.attach_volume(context, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2481 |
entry['connection_info'], instance, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2482 |
entry['mount_device']) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2483 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2484 |
if power_on: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2485 |
self._power_on(instance) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2486 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2487 |
if brand == ZONE_BRAND_SOLARIS: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2488 |
return |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2489 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2490 |
# 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
|
2491 |
# 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
|
2492 |
# 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
|
2493 |
# 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
|
2494 |
# 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
|
2495 |
# can remove this hack. |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2496 |
greenthread.sleep(15) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2497 |
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
|
2498 |
'/usr/sbin/zpool', 'set', |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2499 |
'autoexpand=off', 'rpool') |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2500 |
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
|
2501 |
'/usr/sbin/zpool', 'set', |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2502 |
'autoexpand=on', 'rpool') |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2503 |
except Exception: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2504 |
# 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
|
2505 |
# 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
|
2506 |
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
|
2507 |
network_info, samehost) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2508 |
raise |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2509 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2510 |
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
|
2511 |
"""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
|
2512 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2513 |
: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
|
2514 |
""" |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2515 |
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
|
2516 |
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
|
2517 |
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
|
2518 |
if new_rvid and old_rvid: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2519 |
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
|
2520 |
del instance.system_metadata['old_instance_volid'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2521 |
del instance.system_metadata['new_instance_volid'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2522 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2523 |
self._volume_api.delete(context, old_rvid) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2524 |
self._volume_api.update(context, new_rvid, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2525 |
{'display_name': new_vname}) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2526 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2527 |
if not samehost: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2528 |
self.destroy(context, instance, network_info) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2529 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2530 |
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
|
2531 |
replacement, newvolumesz, mountdev, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2532 |
samehost=True): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2533 |
"""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
|
2534 |
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
|
2535 |
same host |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2536 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2537 |
: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
|
2538 |
: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
|
2539 |
: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
|
2540 |
:param replacement: id of the new volume |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2541 |
:param newvolumesz: size of the new volume |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2542 |
: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
|
2543 |
: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
|
2544 |
""" |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2545 |
connector = self.get_volume_connector(instance) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2546 |
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
|
2547 |
replacement, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2548 |
connector) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2549 |
connection_info['serial'] = replacement |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2550 |
rootmp = instance.root_device_name |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2551 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2552 |
if samehost: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2553 |
name = instance['name'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2554 |
zone = self._get_zone_by_name(name) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2555 |
if zone is None: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2556 |
raise exception.InstanceNotFound(instance_id=name) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2557 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2558 |
# 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
|
2559 |
# 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
|
2560 |
# not fail. |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2561 |
if zone.brand == ZONE_BRAND_SOLARIS: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2562 |
zone.detach() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2563 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2564 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2565 |
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
|
2566 |
finally: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2567 |
if zone.brand == ZONE_BRAND_SOLARIS: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2568 |
zone.attach() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2569 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2570 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2571 |
self._volume_api.detach(context, configured) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2572 |
except Exception: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2573 |
LOG.error(_("Failed to detach the volume")) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2574 |
raise |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2575 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2576 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2577 |
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
|
2578 |
rootmp) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2579 |
except Exception: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2580 |
LOG.error(_("Failed to attach the volume")) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2581 |
raise |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2582 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2583 |
bdmobj = objects.BlockDeviceMapping() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2584 |
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
|
2585 |
bdm['connection_info'] = jsonutils.dumps(connection_info) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2586 |
bdm['volume_id'] = replacement |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2587 |
bdm.save() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2588 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2589 |
if not samehost: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2590 |
return connection_info |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2591 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2592 |
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
|
2593 |
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
|
2594 |
"""Finish reverting a resize. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2595 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2596 |
: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
|
2597 |
: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
|
2598 |
:param network_info: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2599 |
: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
|
2600 |
: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
|
2601 |
: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
|
2602 |
otherwise |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2603 |
""" |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2604 |
# If this is not a samehost migration then we need to re-attach the |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2605 |
# original volume to the instance. If this was processed in the |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2606 |
# initial revert handling this work has already been done. |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2607 |
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
|
2608 |
if old_rvid: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2609 |
connector = self.get_volume_connector(instance) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2610 |
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
|
2611 |
old_rvid, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2612 |
connector) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2613 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2614 |
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
|
2615 |
self._volume_api.detach(context, new_rvid) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2616 |
self._volume_api.delete(context, new_rvid) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2617 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2618 |
rootmp = instance.root_device_name |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2619 |
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
|
2620 |
rootmp) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2621 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2622 |
bdmobj = objects.BlockDeviceMapping() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2623 |
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
|
2624 |
bdm['connection_info'] = jsonutils.dumps(connection_info) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2625 |
bdm['volume_id'] = old_rvid |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2626 |
bdm.save() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2627 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2628 |
del instance.system_metadata['new_instance_volid'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2629 |
del instance.system_metadata['old_instance_volid'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2630 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2631 |
rootmp = instance.root_device_name |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2632 |
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
|
2633 |
for entry in bmap: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2634 |
if entry['mount_device'] != rootmp: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2635 |
self.attach_volume(context, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2636 |
entry['connection_info'], instance, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2637 |
entry['mount_device']) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2638 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2639 |
self._power_on(instance) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2640 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2641 |
def pause(self, instance): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2642 |
"""Pause the specified instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2643 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2644 |
: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
|
2645 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2646 |
# 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
|
2647 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2648 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2649 |
def unpause(self, instance): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2650 |
"""Unpause paused VM instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2651 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2652 |
: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
|
2653 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2654 |
# 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
|
2655 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2656 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2657 |
def suspend(self, instance): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2658 |
"""suspend the specified instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2659 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2660 |
: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
|
2661 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2662 |
# TODO(Vek): Need to pass context in for access to auth_token |
4781
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
2663 |
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
|
2664 |
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
|
2665 |
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
|
2666 |
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
|
2667 |
|
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
2668 |
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
|
2669 |
# 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
|
2670 |
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
|
2671 |
"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
|
2672 |
"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
|
2673 |
% (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
|
2674 |
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
|
2675 |
|
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
2676 |
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
|
2677 |
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
|
2678 |
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
|
2679 |
|
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
2680 |
try: |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
2681 |
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
|
2682 |
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
|
2683 |
# 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
|
2684 |
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
|
2685 |
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
|
2686 |
# 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
|
2687 |
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
|
2688 |
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
|
2689 |
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
|
2690 |
|
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
2691 |
zone.suspend() |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
2692 |
except Exception as reason: |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
2693 |
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
|
2694 |
"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
|
2695 |
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
|
2696 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2697 |
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
|
2698 |
"""resume the specified instance. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2699 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2700 |
: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
|
2701 |
: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
|
2702 |
:param network_info: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2703 |
: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
|
2704 |
: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
|
2705 |
""" |
4781
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
2706 |
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
|
2707 |
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
|
2708 |
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
|
2709 |
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
|
2710 |
|
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
2711 |
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
|
2712 |
# 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
|
2713 |
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
|
2714 |
"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
|
2715 |
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
|
2716 |
|
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
2717 |
# 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
|
2718 |
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
|
2719 |
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
|
2720 |
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
|
2721 |
|
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
2722 |
try: |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
2723 |
zone.boot() |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
2724 |
except Exception as reason: |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
2725 |
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
|
2726 |
% (name, reason)) |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
2727 |
raise exception.InstanceResumeFailure(reason=reason) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2728 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2729 |
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
|
2730 |
block_device_info=None): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2731 |
"""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
|
2732 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2733 |
: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
|
2734 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2735 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2736 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2737 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2738 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2739 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2740 |
# 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
|
2741 |
# property. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2742 |
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
|
2743 |
power_state.SHUTDOWN): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2744 |
return |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2745 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2746 |
self._power_on(instance) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2747 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2748 |
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
|
2749 |
rescue_password): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2750 |
"""Rescue the specified instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2751 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2752 |
: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
|
2753 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2754 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2755 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2756 |
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
|
2757 |
"""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
|
2758 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2759 |
: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
|
2760 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2761 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2762 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2763 |
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
|
2764 |
"""Unrescue the specified instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2765 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2766 |
: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
|
2767 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2768 |
# 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
|
2769 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2770 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2771 |
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
|
2772 |
"""Power off the specified instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2773 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2774 |
: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
|
2775 |
: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
|
2776 |
: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
|
2777 |
waiting for it to shutdown |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2778 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2779 |
self._power_off(instance, 'SOFT') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2780 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2781 |
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
|
2782 |
block_device_info=None): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2783 |
"""Power on the specified instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2784 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2785 |
: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
|
2786 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2787 |
self._power_on(instance) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2788 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2789 |
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
|
2790 |
"""Soft delete the specified instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2791 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2792 |
: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
|
2793 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2794 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2795 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2796 |
def restore(self, instance): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2797 |
"""Restore the specified instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2798 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2799 |
: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
|
2800 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2801 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2802 |
|
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
|
2803 |
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
|
2804 |
"""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
|
2805 |
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
|
2806 |
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
|
2807 |
(out, _err) = utils.execute('/usr/sbin/zpool', 'get', prop, zpool) |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2808 |
except processutils.ProcessExecutionError as err: |
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
|
2809 |
LOG.error(_("Failed to get property '%s' from zpool '%s': %s") |
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
|
2810 |
% (prop, zpool, err.stderr)) |
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
|
2811 |
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
|
2812 |
|
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
|
2813 |
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
|
2814 |
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
|
2815 |
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
|
2816 |
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
|
2817 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2818 |
def _update_host_stats(self): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2819 |
"""Update currently known host stats.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2820 |
host_stats = {} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2821 |
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
|
2822 |
pages = os.sysconf('SC_PHYS_PAGES') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2823 |
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
|
2824 |
|
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
|
2825 |
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
|
2826 |
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
|
2827 |
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
|
2828 |
if size is not None: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2829 |
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
|
2830 |
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
|
2831 |
host_stats['local_gb'] = 0 |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2832 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2833 |
# 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
|
2834 |
# 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
|
2835 |
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
|
2836 |
if kstat_data is not None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2837 |
host_stats['vcpus_used'] = \ |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2838 |
host_stats['vcpus'] - kstat_data['ncpus'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2839 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2840 |
host_stats['vcpus_used'] = 0 |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2841 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2842 |
# 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
|
2843 |
# used. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2844 |
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
|
2845 |
'system_pages') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2846 |
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
|
2847 |
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
|
2848 |
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
|
2849 |
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
|
2850 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2851 |
host_stats['memory_mb_used'] = 0 |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2852 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2853 |
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
|
2854 |
if free is not None: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2855 |
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
|
2856 |
else: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2857 |
free_disk_gb = 0 |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2858 |
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
|
2859 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2860 |
host_stats['hypervisor_type'] = 'solariszones' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2861 |
host_stats['hypervisor_version'] = int(self._uname[2].replace('.', '')) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2862 |
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
|
2863 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2864 |
if self._uname[4] == 'i86pc': |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2865 |
architecture = 'x86_64' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2866 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2867 |
architecture = 'sparc64' |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2868 |
cpu_info = { |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2869 |
'arch': architecture |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2870 |
} |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2871 |
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
|
2872 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2873 |
host_stats['disk_available_least'] = 0 |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2874 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2875 |
supported_instances = [ |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2876 |
(architecture, 'solariszones', 'solariszones') |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2877 |
] |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2878 |
host_stats['supported_instances'] = \ |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2879 |
jsonutils.dumps(supported_instances) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2880 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2881 |
self._host_stats = host_stats |
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 |
def get_available_resource(self, nodename): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2884 |
"""Retrieve resource information. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2885 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2886 |
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
|
2887 |
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
|
2888 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2889 |
:param nodename: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2890 |
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
|
2891 |
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
|
2892 |
:returns: Dictionary describing resources |
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 |
self._update_host_stats() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2895 |
host_stats = self._host_stats |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2896 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2897 |
resources = {} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2898 |
resources['vcpus'] = host_stats['vcpus'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2899 |
resources['memory_mb'] = host_stats['memory_mb'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2900 |
resources['local_gb'] = host_stats['local_gb'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2901 |
resources['vcpus_used'] = host_stats['vcpus_used'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2902 |
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
|
2903 |
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
|
2904 |
resources['hypervisor_type'] = host_stats['hypervisor_type'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2905 |
resources['hypervisor_version'] = host_stats['hypervisor_version'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2906 |
resources['hypervisor_hostname'] = host_stats['hypervisor_hostname'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2907 |
resources['cpu_info'] = host_stats['cpu_info'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2908 |
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
|
2909 |
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
|
2910 |
return resources |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2911 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2912 |
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
|
2913 |
network_info, disk_info, migrate_data=None): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2914 |
"""Prepare an instance for live migration |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2915 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2916 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2917 |
: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
|
2918 |
: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
|
2919 |
:param network_info: instance network information |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2920 |
:param disk_info: instance disk information |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2921 |
:param migrate_data: implementation specific data dict. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2922 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2923 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2924 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2925 |
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
|
2926 |
post_method, recover_method, block_migration=False, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2927 |
migrate_data=None): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2928 |
"""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
|
2929 |
|
3998
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: |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2932 |
nova.db.sqlalchemy.models.Instance object |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2933 |
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
|
2934 |
:param dest: destination host |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2935 |
:param post_method: |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2936 |
post operation method. |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2937 |
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
|
2938 |
:param recover_method: |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2939 |
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
|
2940 |
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
|
2941 |
: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
|
2942 |
:param migrate_data: implementation specific params. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2943 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2944 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2945 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2946 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2947 |
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
|
2948 |
network_info, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2949 |
block_device_info, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2950 |
destroy_disks=True, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2951 |
migrate_data=None): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2952 |
"""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
|
2953 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2954 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2955 |
: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
|
2956 |
: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
|
2957 |
: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
|
2958 |
:param destroy_disks: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2959 |
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
|
2960 |
: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
|
2961 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2962 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2963 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2964 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2965 |
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
|
2966 |
migrate_data=None): |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2967 |
"""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
|
2968 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2969 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2970 |
: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
|
2971 |
: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
|
2972 |
: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
|
2973 |
""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2974 |
pass |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2975 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2976 |
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
|
2977 |
"""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
|
2978 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2979 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2980 |
:param instance: instance object reference |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2981 |
: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
|
2982 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2983 |
raise NotImplementedError(_("Hypervisor driver does not support " |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2984 |
"post_live_migration_at_source method")) |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2985 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2986 |
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
|
2987 |
network_info, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2988 |
block_migration=False, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2989 |
block_device_info=None): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2990 |
"""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
|
2991 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2992 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2993 |
: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
|
2994 |
:param network_info: instance network information |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2995 |
: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
|
2996 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2997 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2998 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2999 |
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
|
3000 |
"""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
|
3001 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3002 |
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
|
3003 |
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
|
3004 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3005 |
:param context: security context |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3006 |
:param instance: nova.db.sqlalchemy.models.Instance |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3007 |
""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3008 |
raise NotImplementedError() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3009 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3010 |
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
|
3011 |
"""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
|
3012 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3013 |
:param context: security context |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3014 |
: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
|
3015 |
""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3016 |
raise NotImplementedError() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3017 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3018 |
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
|
3019 |
"""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
|
3020 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3021 |
:param context: security context |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3022 |
: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
|
3023 |
""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3024 |
pass |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3025 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3026 |
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
|
3027 |
src_compute_info, dst_compute_info, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3028 |
block_migration=False, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3029 |
disk_over_commit=False): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3030 |
"""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
|
3031 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3032 |
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
|
3033 |
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
|
3034 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3035 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3036 |
: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
|
3037 |
: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
|
3038 |
: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
|
3039 |
: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
|
3040 |
: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
|
3041 |
: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
|
3042 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3043 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3044 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3045 |
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
|
3046 |
dest_check_data): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3047 |
"""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
|
3048 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3049 |
:param context: security context |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3050 |
: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
|
3051 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3052 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3053 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3054 |
def check_can_live_migrate_source(self, context, instance, |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3055 |
dest_check_data): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3056 |
"""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
|
3057 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3058 |
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
|
3059 |
results from check_can_live_migrate_destination. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3060 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3061 |
:param context: security context |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3062 |
: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
|
3063 |
:param dest_check_data: result of check_can_live_migrate_destination |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3064 |
: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
|
3065 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3066 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3067 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3068 |
def get_instance_disk_info(self, instance_name, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3069 |
block_device_info=None): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3070 |
"""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
|
3071 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3072 |
:param instance_name: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3073 |
name of a nova instance as returned by list_instances() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3074 |
:param block_device_info: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3075 |
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
|
3076 |
actually volumes. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3077 |
:return: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3078 |
json strings with below format:: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3079 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3080 |
"[{'path':'disk', |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3081 |
'type':'raw', |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3082 |
'virt_disk_size':'10737418240', |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3083 |
'backing_file':'backing_file', |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3084 |
'disk_size':'83886080' |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3085 |
'over_committed_disk_size':'10737418240'}, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3086 |
...]" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3087 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3088 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3089 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3090 |
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
|
3091 |
"""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
|
3092 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3093 |
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
|
3094 |
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
|
3095 |
running the specified security group. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3096 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3097 |
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
|
3098 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3099 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3100 |
# 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
|
3101 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3102 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3103 |
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
|
3104 |
"""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
|
3105 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3106 |
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
|
3107 |
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
|
3108 |
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
|
3109 |
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
|
3110 |
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
|
3111 |
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
|
3112 |
cannot. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3113 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3114 |
Scenario: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3115 |
* 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
|
3116 |
* 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
|
3117 |
* 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
|
3118 |
* 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
|
3119 |
* 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
|
3120 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3121 |
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
|
3122 |
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
|
3123 |
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
|
3124 |
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
|
3125 |
added or removed from the group. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3126 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3127 |
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
|
3128 |
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
|
3129 |
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
|
3130 |
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
|
3131 |
: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
|
3132 |
are made to authorizing those instances. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3133 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3134 |
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
|
3135 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3136 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3137 |
# 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
|
3138 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3139 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3140 |
def refresh_provider_fw_rules(self): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3141 |
"""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
|
3142 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3143 |
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
|
3144 |
datastore. You can retrieve rules with |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3145 |
: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
|
3146 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3147 |
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
|
3148 |
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
|
3149 |
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
|
3150 |
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
|
3151 |
flag for the libvirt-derived classes. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3152 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3153 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3154 |
# 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
|
3155 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3156 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3157 |
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
|
3158 |
"""Refresh security group rules |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3159 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3160 |
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
|
3161 |
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
|
3162 |
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
|
3163 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3164 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3165 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3166 |
def reset_network(self, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3167 |
"""reset networking for specified instance.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3168 |
# 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
|
3169 |
pass |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3170 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3171 |
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
|
3172 |
"""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
|
3173 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3174 |
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
|
3175 |
and firewalls are inevitable on destination host. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3176 |
( Waiting only for filtering rules to hypervisor, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3177 |
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
|
3178 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3179 |
Concretely, the below method must be called. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3180 |
- setup_basic_filtering (for nova-basic, etc.) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3181 |
- 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
|
3182 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3183 |
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
|
3184 |
but libvirt migrates those value through migrateToURI(), |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3185 |
so , no need to be called. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3186 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3187 |
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
|
3188 |
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
|
3189 |
are not completed. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3190 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3191 |
: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
|
3192 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3193 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3194 |
# 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
|
3195 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3196 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3197 |
def filter_defer_apply_on(self): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3198 |
"""Defer application of IPTables rules.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3199 |
pass |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3200 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3201 |
def filter_defer_apply_off(self): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3202 |
"""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
|
3203 |
pass |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3204 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3205 |
def unfilter_instance(self, instance, network_info): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3206 |
"""Stop filtering instance.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3207 |
# 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
|
3208 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3209 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3210 |
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
|
3211 |
"""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
|
3212 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3213 |
: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
|
3214 |
:param new_password: the new password |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3215 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3216 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3217 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3218 |
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
|
3219 |
"""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
|
3220 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3221 |
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
|
3222 |
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
|
3223 |
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
|
3224 |
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
|
3225 |
base64-encoded. |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3226 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3227 |
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
|
3228 |
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
|
3229 |
""" |
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 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3233 |
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
|
3234 |
"""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
|
3235 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3236 |
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
|
3237 |
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
|
3238 |
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
|
3239 |
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
|
3240 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3241 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3242 |
:param instance: nova.objects.instance.Instance |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3243 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3244 |
pass |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3245 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3246 |
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
|
3247 |
"""inject network info for specified instance.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3248 |
# 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
|
3249 |
pass |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3250 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3251 |
def poll_rebooting_instances(self, timeout, instances): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3252 |
"""Poll for rebooting instances |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3253 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3254 |
: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
|
3255 |
rebooting instances to be stuck |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3256 |
: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
|
3257 |
longer than the configured timeout |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3258 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3259 |
# 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
|
3260 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3261 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3262 |
def host_power_action(self, host, action): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3263 |
"""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
|
3264 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3265 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3266 |
def host_maintenance_mode(self, host, mode): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3267 |
"""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
|
3268 |
guest VMs evacuation. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3269 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3270 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3271 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3272 |
def set_host_enabled(self, host, enabled): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3273 |
"""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
|
3274 |
# 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
|
3275 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3276 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3277 |
def get_host_uptime(self, host): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3278 |
"""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
|
3279 |
# 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
|
3280 |
return utils.execute('/usr/bin/uptime')[0] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3281 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3282 |
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
|
3283 |
"""Plug VIFs into networks. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3284 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3285 |
: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
|
3286 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3287 |
# 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
|
3288 |
pass |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3289 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3290 |
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
|
3291 |
"""Unplug VIFs from networks. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3292 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3293 |
: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
|
3294 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3295 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3296 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3297 |
def get_host_stats(self, refresh=False): |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3298 |
"""Return currently known host stats. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3299 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3300 |
If the hypervisor supports pci passthrough, the returned |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3301 |
dictionary includes a key-value pair for it. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3302 |
The key of pci passthrough device is "pci_passthrough_devices" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3303 |
and the value is a json string for the list of assignable |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3304 |
pci devices. Each device is a dictionary, with mandatory |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3305 |
keys of 'address', 'vendor_id', 'product_id', 'dev_type', |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3306 |
'dev_id', 'label' and other optional device specific information. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3307 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3308 |
Refer to the objects/pci_device.py for more idea of these keys. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3309 |
""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3310 |
if refresh or not self._host_stats: |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3311 |
self._update_host_stats() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3312 |
return self._host_stats |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3313 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3314 |
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
|
3315 |
"""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
|
3316 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3317 |
: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
|
3318 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3319 |
| {'kernel': kern, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3320 |
| 'idle': idle, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3321 |
| 'user': user, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3322 |
| 'iowait': wait, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3323 |
| 'frequency': freq}, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3324 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3325 |
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
|
3326 |
(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
|
3327 |
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
|
3328 |
(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
|
3329 |
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
|
3330 |
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
|
3331 |
long integers. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3332 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3333 |
""" |
3998
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 block_stats(self, instance_name, disk_id): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3337 |
"""Return performance counters associated with the given disk_id on the |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3338 |
given instance_name. These are returned as [rd_req, rd_bytes, wr_req, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3339 |
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
|
3340 |
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
|
3341 |
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
|
3342 |
full pipeline. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3343 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3344 |
All counters are long integers. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3345 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3346 |
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
|
3347 |
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
|
3348 |
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
|
3349 |
unused. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3350 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3351 |
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
|
3352 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3353 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3354 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3355 |
def interface_stats(self, instance_name, iface_id): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3356 |
"""Return performance counters associated with the given iface_id |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3357 |
on the given instance_id. These are returned as [rx_bytes, rx_packets, |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3358 |
rx_errs, rx_drop, tx_bytes, tx_packets, tx_errs, tx_drop], where rx |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3359 |
indicates receive, tx indicates transmit, bytes and packets indicate |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3360 |
the total number of bytes or packets transferred, and errs and dropped |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3361 |
is the total number of packets failed / dropped. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3362 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3363 |
All counters are long integers. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3364 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3365 |
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
|
3366 |
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
|
3367 |
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
|
3368 |
unused. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3369 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3370 |
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
|
3371 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3372 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3373 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3374 |
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
|
3375 |
"""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
|
3376 |
return False |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3377 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3378 |
def macs_for_instance(self, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3379 |
"""What MAC addresses must this instance have? |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3380 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3381 |
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
|
3382 |
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
|
3383 |
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
|
3384 |
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
|
3385 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3386 |
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
|
3387 |
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
|
3388 |
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
|
3389 |
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
|
3390 |
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
|
3391 |
actual configuration. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3392 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3393 |
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
|
3394 |
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
|
3395 |
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
|
3396 |
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
|
3397 |
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
|
3398 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3399 |
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
|
3400 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3401 |
: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
|
3402 |
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
|
3403 |
MAC addresses'. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3404 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3405 |
return None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3406 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3407 |
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
|
3408 |
"""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
|
3409 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3410 |
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
|
3411 |
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
|
3412 |
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
|
3413 |
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
|
3414 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3415 |
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
|
3416 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3417 |
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
|
3418 |
client API. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3419 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3420 |
: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
|
3421 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3422 |
| [{'opt_name': 'bootfile-name', |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3423 |
| '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
|
3424 |
| {'opt_name': 'server-ip-address', |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3425 |
| '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
|
3426 |
| {'opt_name': 'tftp-server', |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3427 |
| '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
|
3428 |
| ] |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3429 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3430 |
""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3431 |
pass |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3432 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3433 |
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
|
3434 |
"""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
|
3435 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3436 |
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
|
3437 |
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
|
3438 |
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
|
3439 |
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
|
3440 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3441 |
:param instances: nova.objects.instance.InstanceList |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3442 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3443 |
pass |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3444 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3445 |
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
|
3446 |
"""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
|
3447 |
# 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
|
3448 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3449 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3450 |
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
|
3451 |
"""Remove a compute host from an aggregate.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3452 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3453 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3454 |
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
|
3455 |
host, set_error=True): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3456 |
"""Undo for Resource Pools.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3457 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3458 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3459 |
def get_volume_connector(self, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3460 |
"""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
|
3461 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3462 |
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
|
3463 |
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
|
3464 |
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
|
3465 |
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
|
3466 |
|
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 |
'ip': ip, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3469 |
'initiator': initiator, |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3470 |
'wwnns': wwnns, |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3471 |
'wwpns': wwpns, |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3472 |
'host': hostname |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3473 |
} |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3474 |
|
1760
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 |
connector = {'ip': self.get_host_ip_addr(), |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3477 |
'host': CONF.host} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3478 |
if not self._initiator: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3479 |
self._initiator = self._get_iscsi_initiator() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3480 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3481 |
if self._initiator: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3482 |
connector['initiator'] = self._initiator |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3483 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3484 |
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
|
3485 |
instance=instance) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3486 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3487 |
if not self._fc_wwnns: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3488 |
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
|
3489 |
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
|
3490 |
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
|
3491 |
'World Wide Node Names'), |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3492 |
instance=instance) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3493 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3494 |
if not self._fc_wwpns: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3495 |
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
|
3496 |
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
|
3497 |
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
|
3498 |
'World Wide Port Names'), |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3499 |
instance=instance) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3500 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3501 |
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
|
3502 |
connector["wwnns"] = self._fc_wwnns |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3503 |
connector["wwpns"] = self._fc_wwpns |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3504 |
return connector |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3505 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3506 |
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
|
3507 |
"""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
|
3508 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3509 |
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
|
3510 |
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
|
3511 |
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
|
3512 |
[hypervisor_hostname]. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3513 |
""" |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3514 |
stats = self.get_host_stats(refresh=refresh) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3515 |
if not isinstance(stats, list): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3516 |
stats = [stats] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3517 |
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
|
3518 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3519 |
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
|
3520 |
"""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
|
3521 |
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
|
3522 |
return True |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3523 |
# Refresh and check again. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3524 |
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
|
3525 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3526 |
def get_per_instance_usage(self): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3527 |
"""Get information about instance resource usage. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3528 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3529 |
: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
|
3530 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3531 |
return {} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3532 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3533 |
def instance_on_disk(self, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3534 |
"""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
|
3535 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3536 |
: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
|
3537 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3538 |
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
|
3539 |
the host, False otherwise. |
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 |
.. note:: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3542 |
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
|
3543 |
of access to instance shared disk files |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3544 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3545 |
return False |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3546 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3547 |
def register_event_listener(self, callback): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3548 |
"""Register a callback to receive events. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3549 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3550 |
Register a callback to receive asynchronous event |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3551 |
notifications from hypervisors. The callback will |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3552 |
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
|
3553 |
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
|
3554 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3555 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3556 |
self._compute_event_callback = callback |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3557 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3558 |
def emit_event(self, event): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3559 |
"""Dispatches an event to the compute manager. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3560 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3561 |
Invokes the event callback registered by the |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3562 |
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
|
3563 |
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
|
3564 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3565 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3566 |
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
|
3567 |
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
|
3568 |
return |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3569 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3570 |
if not isinstance(event, virtevent.Event): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3571 |
raise ValueError( |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3572 |
_("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
|
3573 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3574 |
try: |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3575 |
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
|
3576 |
self._compute_event_callback(event) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3577 |
except Exception as ex: |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3578 |
LOG.error(_("Exception dispatching event %(event)s: %(ex)s"), |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3579 |
{'event': event, 'ex': ex}) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3580 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3581 |
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
|
3582 |
"""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
|
3583 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3584 |
: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
|
3585 |
: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
|
3586 |
""" |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3587 |
# 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
|
3588 |
# 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
|
3589 |
# the code here. |
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
3590 |
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
|
3591 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3592 |
self.destroy(None, instance, None) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3593 |
except Exception: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3594 |
return False |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3595 |
return True |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3596 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3597 |
@property |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3598 |
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
|
3599 |
"""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
|
3600 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3601 |
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
|
3602 |
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
|
3603 |
""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3604 |
return True |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3605 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3606 |
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
|
3607 |
create_info): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3608 |
"""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
|
3609 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3610 |
:param context: request context |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3611 |
: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
|
3612 |
attached |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3613 |
: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
|
3614 |
: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
|
3615 |
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
|
3616 |
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
|
3617 |
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
|
3618 |
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
|
3619 |
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
|
3620 |
needed for creating the snapshot. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3621 |
""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3622 |
raise NotImplementedError() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3623 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3624 |
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
|
3625 |
snapshot_id, delete_info): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3626 |
"""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
|
3627 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3628 |
:param context: request context |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3629 |
: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
|
3630 |
attached |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3631 |
: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
|
3632 |
: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
|
3633 |
: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
|
3634 |
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
|
3635 |
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
|
3636 |
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
|
3637 |
""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3638 |
raise NotImplementedError() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3639 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3640 |
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
|
3641 |
"""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
|
3642 |
raise NotImplementedError() |
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 |
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
|
3645 |
*block_device_lists): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3646 |
"""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
|
3647 |
raise NotImplementedError() |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3648 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3649 |
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
|
3650 |
"""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
|
3651 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3652 |
: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
|
3653 |
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
|
3654 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3655 |
# 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
|
3656 |
# 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
|
3657 |
# 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
|
3658 |
# virt layer. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3659 |
return False |