author | Sean Wilcox <sean.wilcox@oracle.com> |
Tue, 17 Jan 2017 12:30:21 -0700 | |
changeset 7583 | 612b249c2397 |
parent 7475 | 6144ac72c2b3 |
child 7593 | 3f5b9ebe028b |
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 |
# |
7583
612b249c2397
25202866 Nova resize fails with Pure storage iSCSI back-end
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7475
diff
changeset
|
4 |
# Copyright (c) 2013, 2017, 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 |
|
7266
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
30 |
from collections import defaultdict |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
31 |
from openstack_common import get_ovsdb_info |
5279
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
32 |
import rad.bindings.com.oracle.solaris.rad.archivemgr_1 as archivemgr |
7266
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
33 |
import rad.bindings.com.oracle.solaris.rad.kstat_2 as kstat |
4669
342ab6111bb5
20957828 swift Makefile has typo for COMPONENT_BUGDB
david.comay@oracle.com
parents:
4585
diff
changeset
|
34 |
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
|
35 |
import rad.client |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
36 |
import rad.connect |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
37 |
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
|
38 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
39 |
from cinderclient import exceptions as cinder_exception |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
40 |
from cinderclient.v1 import client as v1_client |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
41 |
from eventlet import greenthread |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
42 |
from keystoneclient import exceptions as keystone_exception |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
43 |
from lxml import etree |
6901
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
44 |
from oslo_concurrency import lockutils, processutils |
4553
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
45 |
from oslo_config import cfg |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
46 |
from oslo_log import log as logging |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
47 |
from oslo_serialization import jsonutils |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
48 |
from oslo_utils import excutils |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
49 |
from oslo_utils import fileutils |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
50 |
from oslo_utils import strutils |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
51 |
from oslo_utils import versionutils |
4695
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
52 |
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
|
53 |
|
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
54 |
from nova.api.metadata import password |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
55 |
from nova.compute import arch |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
56 |
from nova.compute import hv_type |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
57 |
from nova.compute import power_state |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
58 |
from nova.compute import task_states |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
59 |
from nova.compute import vm_mode |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
60 |
from nova.compute import vm_states |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
61 |
from nova import conductor |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
62 |
import nova.conf |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
63 |
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
|
64 |
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
|
65 |
from nova import crypto |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
66 |
from nova import exception |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
67 |
from nova.i18n import _, _LE, _LI |
5607
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
68 |
from nova.image import API as glance_api |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
69 |
from nova.image import glance |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
70 |
from nova.network.neutronv2 import api as neutronv2_api |
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
71 |
from nova import objects |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
72 |
from nova.objects import flavor as flavor_obj |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
73 |
from nova.objects import migrate_data as migrate_data_obj |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
74 |
from nova import utils |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
75 |
from nova.virt import driver |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
76 |
from nova.virt import event as virtevent |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
77 |
from nova.virt import hardware |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
78 |
from nova.virt import images |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
79 |
from nova.virt.solariszones import sysconfig |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
80 |
from nova.volume.cinder import API |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
81 |
from nova.volume.cinder import cinderclient |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
82 |
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
|
83 |
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
|
84 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
85 |
solariszones_opts = [ |
6014
83c60536394d
PSARC/2016/242 Nova boot volume placement
Niall Power <niall.power@oracle.com>
parents:
5949
diff
changeset
|
86 |
cfg.StrOpt('boot_volume_type', |
83c60536394d
PSARC/2016/242 Nova boot volume placement
Niall Power <niall.power@oracle.com>
parents:
5949
diff
changeset
|
87 |
default=None, |
83c60536394d
PSARC/2016/242 Nova boot volume placement
Niall Power <niall.power@oracle.com>
parents:
5949
diff
changeset
|
88 |
help='Cinder volume type to use for boot volumes'), |
83c60536394d
PSARC/2016/242 Nova boot volume placement
Niall Power <niall.power@oracle.com>
parents:
5949
diff
changeset
|
89 |
cfg.StrOpt('boot_volume_az', |
83c60536394d
PSARC/2016/242 Nova boot volume placement
Niall Power <niall.power@oracle.com>
parents:
5949
diff
changeset
|
90 |
default=None, |
83c60536394d
PSARC/2016/242 Nova boot volume placement
Niall Power <niall.power@oracle.com>
parents:
5949
diff
changeset
|
91 |
help='Cinder availability zone to use for boot volumes'), |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
92 |
cfg.StrOpt('glancecache_dirname', |
5609
318813fd0ac2
PSARC/2016/172 Making OpenStack Nova's image cache sharable
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5608
diff
changeset
|
93 |
default='/var/share/nova/images', |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
94 |
help='Default path to Glance cache for Solaris Zones.'), |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
95 |
cfg.StrOpt('live_migration_cipher', |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
96 |
help='Cipher to use for encryption of memory traffic during ' |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
97 |
'live migration. If not specified, a common encryption ' |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
98 |
'algorithm will be negotiated. Options include: none or ' |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
99 |
'the name of a supported OpenSSL cipher algorithm.'), |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
100 |
cfg.StrOpt('solariszones_snapshots_directory', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
101 |
default='$instances_path/snapshots', |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
102 |
help='Location to store snapshots before uploading them to the ' |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
103 |
'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
|
104 |
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
|
105 |
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
|
106 |
help='Default path for suspend images for Solaris Zones.'), |
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
107 |
cfg.BoolOpt('solariszones_boot_options', |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
108 |
default=True, |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
109 |
help='Allow kernel boot options to be set in instance ' |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
110 |
'metadata.'), |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
111 |
] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
112 |
|
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
113 |
CONF = nova.conf.CONF |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
114 |
CONF.register_opts(solariszones_opts, 'solariszones') |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
115 |
LOG = logging.getLogger(__name__) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
116 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
117 |
# 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
|
118 |
# 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
|
119 |
# 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
|
120 |
# the zonemgr(3RAD) provider. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
121 |
ZONE_STATE_CONFIGURED = 'configured' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
122 |
ZONE_STATE_INCOMPLETE = 'incomplete' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
123 |
ZONE_STATE_UNAVAILABLE = 'unavailable' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
124 |
ZONE_STATE_INSTALLED = 'installed' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
125 |
ZONE_STATE_READY = 'ready' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
126 |
ZONE_STATE_RUNNING = 'running' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
127 |
ZONE_STATE_SHUTTING_DOWN = 'shutting_down' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
128 |
ZONE_STATE_DOWN = 'down' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
129 |
ZONE_STATE_MOUNTED = 'mounted' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
130 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
131 |
# 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
|
132 |
SOLARISZONES_POWER_STATE = { |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
133 |
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
|
134 |
ZONE_STATE_INCOMPLETE: power_state.NOSTATE, |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
135 |
ZONE_STATE_UNAVAILABLE: power_state.NOSTATE, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
136 |
ZONE_STATE_INSTALLED: power_state.SHUTDOWN, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
137 |
ZONE_STATE_READY: power_state.RUNNING, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
138 |
ZONE_STATE_RUNNING: power_state.RUNNING, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
139 |
ZONE_STATE_SHUTTING_DOWN: power_state.RUNNING, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
140 |
ZONE_STATE_DOWN: power_state.RUNNING, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
141 |
ZONE_STATE_MOUNTED: power_state.NOSTATE |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
142 |
} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
143 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
144 |
# 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
|
145 |
ZONE_BRAND_LABELED = 'labeled' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
146 |
ZONE_BRAND_SOLARIS = 'solaris' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
147 |
ZONE_BRAND_SOLARIS_KZ = 'solaris-kz' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
148 |
ZONE_BRAND_SOLARIS10 = 'solaris10' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
149 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
150 |
# 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
|
151 |
# brand template. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
152 |
ZONE_BRAND_TEMPLATE = { |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
153 |
ZONE_BRAND_SOLARIS: 'SYSdefault', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
154 |
ZONE_BRAND_SOLARIS_KZ: 'SYSsolaris-kz', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
155 |
} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
156 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
157 |
MAX_CONSOLE_BYTES = 102400 |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
158 |
|
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
159 |
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
|
160 |
# 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
|
161 |
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
|
162 |
XTERM_PATH = '/usr/bin/xterm' |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
163 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
164 |
ROOTZPOOL_RESOURCE = 'rootzpool' |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
165 |
|
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
166 |
# The underlying Solaris Zones framework does not expose a specific |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
167 |
# version number, instead relying on feature tests to identify what is |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
168 |
# and what is not supported. A HYPERVISOR_VERSION is defined here for |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
169 |
# Nova's use but it generally should not be changed unless there is a |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
170 |
# incompatible change such as concerning kernel zone live migration. |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
171 |
HYPERVISOR_VERSION = '5.11' |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
172 |
|
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
173 |
shared_storage = ['iscsi', 'fibre_channel'] |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
174 |
|
7266
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
175 |
KSTAT_TYPE = { |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
176 |
'NVVT_STR': 'string', |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
177 |
'NVVT_STRS': 'strings', |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
178 |
'NVVT_INT': 'integer', |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
179 |
'NVVT_INTS': 'integers', |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
180 |
'NVVT_KSTAT': 'kstat', |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
181 |
} |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
182 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
183 |
|
4781
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
184 |
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
|
185 |
"""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
|
186 |
try: |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
187 |
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
|
188 |
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
|
189 |
return None |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
190 |
except Exception: |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
191 |
raise |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
192 |
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
|
193 |
|
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
194 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
195 |
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
|
196 |
"""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
|
197 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
198 |
val = zone.getResourceProperties(zonemgr.Resource(resource, filter), |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
199 |
[prop]) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
200 |
except rad.client.ObjectError: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
201 |
return None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
202 |
except Exception: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
203 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
204 |
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
|
205 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
206 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
207 |
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
|
208 |
"""Lookup specified property with value from specified Solaris Zone |
5949
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
209 |
resource. Returns resource object if matching value is found, else None |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
210 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
211 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
212 |
resources = zone.getResources(zonemgr.Resource(resource)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
213 |
for resource in resources: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
214 |
for propertee in resource.properties: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
215 |
if propertee.name == prop and propertee.value == value: |
5949
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
216 |
return resource |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
217 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
218 |
return None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
219 |
except rad.client.ObjectError: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
220 |
return None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
221 |
except Exception: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
222 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
223 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
224 |
|
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
225 |
def zonemgr_strerror(ex): |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
226 |
"""Format the payload from a zonemgr(3RAD) rad.client.ObjectError |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
227 |
exception into a sensible error string that can be logged. Newlines |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
228 |
are converted to a colon-space string to create a single line. |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
229 |
|
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
230 |
If the exception was something other than rad.client.ObjectError, |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
231 |
just return it as a string. |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
232 |
""" |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
233 |
if not isinstance(ex, rad.client.ObjectError): |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
234 |
return str(ex) |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
235 |
payload = ex.get_payload() |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
236 |
if payload.code == zonemgr.ErrorCode.NONE: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
237 |
return str(ex) |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
238 |
error = [str(payload.code)] |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
239 |
if payload.str is not None and payload.str != '': |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
240 |
error.append(payload.str) |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
241 |
if payload.stderr is not None and payload.stderr != '': |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
242 |
stderr = payload.stderr.rstrip() |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
243 |
error.append(stderr.replace('\n', ': ')) |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
244 |
result = ': '.join(error) |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
245 |
return result |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
246 |
|
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
247 |
|
7265
078a4fa1d5a1
24933105 Flavor RAM not aligned to 256Mb causes error in nova.virt.solariszones.driver
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7264
diff
changeset
|
248 |
class MemoryAlignmentIncorrect(exception.FlavorMemoryTooSmall): |
078a4fa1d5a1
24933105 Flavor RAM not aligned to 256Mb causes error in nova.virt.solariszones.driver
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7264
diff
changeset
|
249 |
msg_fmt = _("Requested flavor, %(flavor)s, memory size %(memsize)s does " |
078a4fa1d5a1
24933105 Flavor RAM not aligned to 256Mb causes error in nova.virt.solariszones.driver
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7264
diff
changeset
|
250 |
"not align on %(align)s boundary.") |
078a4fa1d5a1
24933105 Flavor RAM not aligned to 256Mb causes error in nova.virt.solariszones.driver
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7264
diff
changeset
|
251 |
|
078a4fa1d5a1
24933105 Flavor RAM not aligned to 256Mb causes error in nova.virt.solariszones.driver
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7264
diff
changeset
|
252 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
253 |
class SolarisVolumeAPI(API): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
254 |
""" 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
|
255 |
""" |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
256 |
@translate_volume_exception |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
257 |
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
|
258 |
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
|
259 |
availability_zone=None, source_volume=None): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
260 |
"""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
|
261 |
create with a source_volid argument |
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 |
:param context: the context for the clone |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
264 |
: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
|
265 |
volume |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
266 |
: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
|
267 |
: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
|
268 |
:param snapshot: Snapshot object |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
269 |
: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
|
270 |
:param volume_type: type of volume |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
271 |
:param metadata: Additional metadata for the volume |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
272 |
: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
|
273 |
:param source_volume: Volume object |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
274 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
275 |
Returns a volume object |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
276 |
""" |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
277 |
client = cinderclient(context) |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
278 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
279 |
if snapshot is not None: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
280 |
snapshot_id = snapshot['id'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
281 |
else: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
282 |
snapshot_id = None |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
283 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
284 |
if source_volume is not None: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
285 |
source_volid = source_volume['id'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
286 |
else: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
287 |
source_volid = None |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
288 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
289 |
kwargs = dict(snapshot_id=snapshot_id, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
290 |
volume_type=volume_type, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
291 |
user_id=context.user_id, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
292 |
project_id=context.project_id, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
293 |
availability_zone=availability_zone, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
294 |
metadata=metadata, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
295 |
imageRef=image_id, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
296 |
source_volid=source_volid) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
297 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
298 |
if isinstance(client, v1_client.Client): |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
299 |
kwargs['display_name'] = name |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
300 |
kwargs['display_description'] = description |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
301 |
else: |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
302 |
kwargs['name'] = name |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
303 |
kwargs['description'] = description |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
304 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
305 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
306 |
item = cinderclient(context).volumes.create(size, **kwargs) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
307 |
return _untranslate_volume_summary_view(context, item) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
308 |
except cinder_exception.OverLimit: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
309 |
raise exception.OverQuota(overs='volumes') |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
310 |
except (cinder_exception.BadRequest, |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
311 |
keystone_exception.BadRequest) as reason: |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
312 |
raise exception.InvalidInput(reason=reason) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
313 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
314 |
@translate_volume_exception |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
315 |
def update(self, context, volume_id, fields): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
316 |
"""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
|
317 |
via a call to cinderclient |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
318 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
319 |
:param context: the context for the update |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
320 |
: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
|
321 |
: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
|
322 |
""" |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
323 |
cinderclient(context).volumes.update(volume_id, **fields) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
324 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
325 |
@translate_volume_exception |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
326 |
def extend(self, context, volume, newsize): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
327 |
"""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
|
328 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
329 |
:param context: the context for the extend |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
330 |
:param volume: the volume object to extend |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
331 |
: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
|
332 |
""" |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
333 |
cinderclient(context).volumes.extend(volume, newsize) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
334 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
335 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
336 |
class ZoneConfig(object): |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
337 |
"""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
|
338 |
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
|
339 |
before exiting |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
340 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
341 |
def __init__(self, zone): |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
342 |
"""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
|
343 |
non-global zone. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
344 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
345 |
self.zone = zone |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
346 |
self.editing = False |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
347 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
348 |
def __enter__(self): |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
349 |
"""enables the editing of the zone.""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
350 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
351 |
self.zone.editConfig() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
352 |
self.editing = True |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
353 |
return self |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
354 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
355 |
reason = zonemgr_strerror(ex) |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
356 |
LOG.exception(_("Unable to initialize editing of instance '%s' " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
357 |
"via zonemgr(3RAD): %s") |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
358 |
% (self.zone.name, reason)) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
359 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
360 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
361 |
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
|
362 |
"""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
|
363 |
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
|
364 |
commit the new configuration. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
365 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
366 |
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
|
367 |
# 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
|
368 |
self.zone.cancelConfig() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
369 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
370 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
371 |
# commit the config |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
372 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
373 |
self.zone.commitConfig() |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
374 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
375 |
reason = zonemgr_strerror(ex) |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
376 |
LOG.exception(_("Unable to commit the new configuration for " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
377 |
"instance '%s' via zonemgr(3RAD): %s") |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
378 |
% (self.zone.name, reason)) |
4551
aeda29f57900
21307395 nova ZoneConfig class should call cancelConfig when editConfig fails in __exit__
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
4550
diff
changeset
|
379 |
|
aeda29f57900
21307395 nova ZoneConfig class should call cancelConfig when editConfig fails in __exit__
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
4550
diff
changeset
|
380 |
# 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
|
381 |
self.zone.cancelConfig() |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
382 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
383 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
384 |
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
|
385 |
"""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
|
386 |
with the given property(s). |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
387 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
388 |
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
|
389 |
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
|
390 |
# the value is already set |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
391 |
return |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
392 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
393 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
394 |
if current is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
395 |
self.zone.addResource(zonemgr.Resource( |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
396 |
resource, [zonemgr.Property(prop, value)])) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
397 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
398 |
self.zone.setResourceProperties( |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
399 |
zonemgr.Resource(resource), |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
400 |
[zonemgr.Property(prop, value)]) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
401 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
402 |
reason = zonemgr_strerror(ex) |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
403 |
LOG.exception(_("Unable to set '%s' property on '%s' resource for " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
404 |
"instance '%s' via zonemgr(3RAD): %s") |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
405 |
% (prop, resource, self.zone.name, reason)) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
406 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
407 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
408 |
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
|
409 |
"""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
|
410 |
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
|
411 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
412 |
: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
|
413 |
resource. |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
414 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
415 |
if props is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
416 |
props = [] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
417 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
418 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
419 |
self.zone.addResource(zonemgr.Resource(resource, props)) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
420 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
421 |
if isinstance(ex, rad.client.ObjectError): |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
422 |
code = ex.get_payload().code |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
423 |
if (ignore_exists and |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
424 |
code == zonemgr.ErrorCode.RESOURCE_ALREADY_EXISTS): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
425 |
self.zone.setResourceProperties( |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
426 |
zonemgr.Resource(resource, None), props) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
427 |
return |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
428 |
reason = zonemgr_strerror(ex) |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
429 |
LOG.exception(_("Unable to create new resource '%s' for instance " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
430 |
"'%s' via zonemgr(3RAD): %s") |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
431 |
% (resource, self.zone.name, reason)) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
432 |
raise |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
433 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
434 |
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
|
435 |
"""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
|
436 |
list specified in props. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
437 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
438 |
if props is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
439 |
props = [] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
440 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
441 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
442 |
self.zone.removeResources(zonemgr.Resource(resource, props)) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
443 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
444 |
reason = zonemgr_strerror(ex) |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
445 |
LOG.exception(_("Unable to remove resource '%s' for instance '%s' " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
446 |
"via zonemgr(3RAD): %s") |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
447 |
% (resource, self.zone.name, reason)) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
448 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
449 |
|
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
450 |
def clear_resource_props(self, resource, props): |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
451 |
"""Clear property values of a given resource |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
452 |
""" |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
453 |
try: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
454 |
self.zone.clearResourceProperties(zonemgr.Resource(resource, None), |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
455 |
props) |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
456 |
except rad.client.ObjectError as ex: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
457 |
reason = zonemgr_strerror(ex) |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
458 |
LOG.exception(_("Unable to clear '%s' property on '%s' resource " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
459 |
"for instance '%s' via zonemgr(3RAD): %s") |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
460 |
% (props, resource, self.zone.name, reason)) |
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
461 |
raise |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
462 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
463 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
464 |
class SolarisZonesDriver(driver.ComputeDriver): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
465 |
"""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
|
466 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
467 |
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
|
468 |
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
|
469 |
(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
|
470 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
471 |
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
|
472 |
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
|
473 |
'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
|
474 |
'instance name' are synonyms. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
475 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
476 |
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
|
477 |
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
|
478 |
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
|
479 |
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
|
480 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
481 |
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
|
482 |
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
|
483 |
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
|
484 |
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
|
485 |
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
|
486 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
487 |
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
|
488 |
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
|
489 |
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
|
490 |
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
|
491 |
virtualization platform. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
492 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
493 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
494 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
495 |
capabilities = { |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
496 |
"has_imagecache": False, |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
497 |
"supports_recreate": True, |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
498 |
"supports_migrate_to_same_host": False |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
499 |
} |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
500 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
501 |
def __init__(self, virtapi): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
502 |
self.virtapi = virtapi |
5610
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
503 |
self._archive_manager = None |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
504 |
self._compute_event_callback = None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
505 |
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
|
506 |
self._fc_hbas = None |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
507 |
self._fc_wwnns = None |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
508 |
self._fc_wwpns = None |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
509 |
self._host_stats = {} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
510 |
self._initiator = None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
511 |
self._install_engine = None |
5610
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
512 |
self._kstat_control = None |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
513 |
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
|
514 |
self._rad_connection = None |
5610
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
515 |
self._rootzpool_suffix = ROOTZPOOL_RESOURCE |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
516 |
self._uname = os.uname() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
517 |
self._validated_archives = list() |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
518 |
self._volume_api = SolarisVolumeAPI() |
5610
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
519 |
self._zone_manager = None |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
520 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
521 |
@property |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
522 |
def rad_connection(self): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
523 |
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
|
524 |
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
|
525 |
else: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
526 |
# 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
|
527 |
# closed connection |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
528 |
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
|
529 |
# 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
|
530 |
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
|
531 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
532 |
return self._rad_connection |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
533 |
|
5610
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
534 |
@property |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
535 |
def zone_manager(self): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
536 |
try: |
5610
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
537 |
if (self._zone_manager is None or |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
538 |
self._zone_manager._conn._closed is not None): |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
539 |
self._zone_manager = self.rad_connection.get_object( |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
540 |
zonemgr.ZoneManager()) |
5279
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
541 |
except Exception as ex: |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
542 |
reason = _("Unable to obtain RAD object: %s") % ex |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
543 |
raise exception.NovaException(reason) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
544 |
|
5610
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
545 |
return self._zone_manager |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
546 |
|
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
547 |
@property |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
548 |
def kstat_control(self): |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
549 |
try: |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
550 |
if (self._kstat_control is None or |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
551 |
self._kstat_control._conn._closed is not None): |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
552 |
self._kstat_control = self.rad_connection.get_object( |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
553 |
kstat.Control()) |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
554 |
except Exception as ex: |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
555 |
reason = _("Unable to obtain RAD object: %s") % ex |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
556 |
raise exception.NovaException(reason) |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
557 |
|
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
558 |
return self._kstat_control |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
559 |
|
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
560 |
@property |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
561 |
def archive_manager(self): |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
562 |
try: |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
563 |
if (self._archive_manager is None or |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
564 |
self._archive_manager._conn._closed is not None): |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
565 |
self._archive_manager = self.rad_connection.get_object( |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
566 |
archivemgr.ArchiveManager()) |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
567 |
except Exception as ex: |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
568 |
reason = _("Unable to obtain RAD object: %s") % ex |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
569 |
raise exception.NovaException(reason) |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
570 |
|
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
571 |
return self._archive_manager |
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
572 |
|
7583
612b249c2397
25202866 Nova resize fails with Pure storage iSCSI back-end
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7475
diff
changeset
|
573 |
def _initialize_volume_connection(self, context, volume_id, connection): |
612b249c2397
25202866 Nova resize fails with Pure storage iSCSI back-end
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7475
diff
changeset
|
574 |
connection_info = self._volume_api.initialize_connection(context, |
612b249c2397
25202866 Nova resize fails with Pure storage iSCSI back-end
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7475
diff
changeset
|
575 |
volume_id, |
612b249c2397
25202866 Nova resize fails with Pure storage iSCSI back-end
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7475
diff
changeset
|
576 |
connection) |
612b249c2397
25202866 Nova resize fails with Pure storage iSCSI back-end
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7475
diff
changeset
|
577 |
connection_info['serial'] = volume_id |
612b249c2397
25202866 Nova resize fails with Pure storage iSCSI back-end
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7475
diff
changeset
|
578 |
|
612b249c2397
25202866 Nova resize fails with Pure storage iSCSI back-end
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7475
diff
changeset
|
579 |
return connection_info |
612b249c2397
25202866 Nova resize fails with Pure storage iSCSI back-end
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7475
diff
changeset
|
580 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
581 |
def init_host(self, host): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
582 |
"""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
|
583 |
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
|
584 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
585 |
# TODO(Vek): Need to pass context in for access to auth_token |
5610
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
586 |
pass |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
587 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
588 |
def cleanup_host(self, host): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
589 |
"""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
|
590 |
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
|
591 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
592 |
pass |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
593 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
594 |
def _get_fc_hbas(self): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
595 |
"""Get Fibre Channel HBA information.""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
596 |
if self._fc_hbas: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
597 |
return self._fc_hbas |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
598 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
599 |
out = None |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
600 |
try: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
601 |
out, err = utils.execute('/usr/sbin/fcinfo', 'hba-port') |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
602 |
except processutils.ProcessExecutionError: |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
603 |
return [] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
604 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
605 |
if out is None: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
606 |
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
|
607 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
608 |
hbas = [] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
609 |
hba = {} |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
610 |
for line in out.splitlines(): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
611 |
line = line.strip() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
612 |
# 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
|
613 |
# 1: Port WWN |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
614 |
# 2: State (online|offline) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
615 |
# 3: Node WWN |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
616 |
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
|
617 |
# New HBA port entry |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
618 |
hba = {} |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
619 |
wwpn = line.split()[-1] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
620 |
hba['port_name'] = wwpn |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
621 |
continue |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
622 |
elif line.startswith("Port Mode:"): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
623 |
mode = line.split()[-1] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
624 |
# Skip Target mode ports |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
625 |
if mode != 'Initiator': |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
626 |
break |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
627 |
elif line.startswith("State:"): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
628 |
state = line.split()[-1] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
629 |
hba['port_state'] = state |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
630 |
continue |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
631 |
elif line.startswith("Node WWN:"): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
632 |
wwnn = line.split()[-1] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
633 |
hba['node_name'] = wwnn |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
634 |
continue |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
635 |
if len(hba) == 3: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
636 |
hbas.append(hba) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
637 |
hba = {} |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
638 |
self._fc_hbas = hbas |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
639 |
return self._fc_hbas |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
640 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
641 |
def _get_fc_wwnns(self): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
642 |
"""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
|
643 |
hbas = self._get_fc_hbas() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
644 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
645 |
wwnns = [] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
646 |
for hba in hbas: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
647 |
if hba['port_state'] == 'online': |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
648 |
wwnn = hba['node_name'] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
649 |
wwnns.append(wwnn) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
650 |
return wwnns |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
651 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
652 |
def _get_fc_wwpns(self): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
653 |
"""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
|
654 |
hbas = self._get_fc_hbas() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
655 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
656 |
wwpns = [] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
657 |
for hba in hbas: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
658 |
if hba['port_state'] == 'online': |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
659 |
wwpn = hba['port_name'] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
660 |
wwpns.append(wwpn) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
661 |
return wwpns |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
662 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
663 |
def _get_iscsi_initiator(self): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
664 |
""" Return the iSCSI initiator node name IQN for this host """ |
6913
473a2401e764
24400482 VM fails to launch if network/iscsi/initiator is disabled
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6912
diff
changeset
|
665 |
try: |
473a2401e764
24400482 VM fails to launch if network/iscsi/initiator is disabled
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6912
diff
changeset
|
666 |
out, err = utils.execute('/usr/sbin/iscsiadm', 'list', |
473a2401e764
24400482 VM fails to launch if network/iscsi/initiator is disabled
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6912
diff
changeset
|
667 |
'initiator-node') |
473a2401e764
24400482 VM fails to launch if network/iscsi/initiator is disabled
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6912
diff
changeset
|
668 |
# Sample first line of command output: |
473a2401e764
24400482 VM fails to launch if network/iscsi/initiator is disabled
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6912
diff
changeset
|
669 |
# Initiator node name: iqn.1986-03.com.sun:01:e00000000000.4f757217 |
473a2401e764
24400482 VM fails to launch if network/iscsi/initiator is disabled
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6912
diff
changeset
|
670 |
initiator_name_line = out.splitlines()[0] |
473a2401e764
24400482 VM fails to launch if network/iscsi/initiator is disabled
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6912
diff
changeset
|
671 |
initiator_iqn = initiator_name_line.rsplit(' ', 1)[1] |
473a2401e764
24400482 VM fails to launch if network/iscsi/initiator is disabled
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6912
diff
changeset
|
672 |
return initiator_iqn |
473a2401e764
24400482 VM fails to launch if network/iscsi/initiator is disabled
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6912
diff
changeset
|
673 |
except processutils.ProcessExecutionError as ex: |
473a2401e764
24400482 VM fails to launch if network/iscsi/initiator is disabled
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6912
diff
changeset
|
674 |
LOG.info(_("Failed to get the initiator-node info: %s") % (ex)) |
473a2401e764
24400482 VM fails to launch if network/iscsi/initiator is disabled
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6912
diff
changeset
|
675 |
return None |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
676 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
677 |
def _get_zone_by_name(self, name): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
678 |
"""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
|
679 |
try: |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
680 |
zone = self.rad_connection.get_object( |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
681 |
zonemgr.Zone(), rad.client.ADRGlobPattern({'name': name})) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
682 |
except rad.client.NotFoundError: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
683 |
return None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
684 |
except Exception: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
685 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
686 |
return zone |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
687 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
688 |
def _get_state(self, zone): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
689 |
"""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
|
690 |
return SOLARISZONES_POWER_STATE[zone.state] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
691 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
692 |
def _pages_to_kb(self, pages): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
693 |
"""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
|
694 |
return (pages * self._pagesize) / 1024 |
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 |
def _get_max_mem(self, zone): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
697 |
"""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
|
698 |
if zone.brand == ZONE_BRAND_SOLARIS: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
699 |
mem_resource = 'swap' |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
700 |
else: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
701 |
mem_resource = 'physical' |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
702 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
703 |
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
|
704 |
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
|
705 |
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
|
706 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
707 |
# 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
|
708 |
# 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
|
709 |
# memory. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
710 |
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
|
711 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
712 |
def _get_mem(self, zone): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
713 |
"""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
|
714 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
715 |
# 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
|
716 |
# 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
|
717 |
# for now. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
718 |
return self._get_max_mem(zone) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
719 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
720 |
def _get_num_cpu(self, zone): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
721 |
"""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
|
722 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
723 |
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
|
724 |
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
|
725 |
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
|
726 |
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
|
727 |
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
|
728 |
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
|
729 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
730 |
# 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
|
731 |
# CPUs defined there. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
732 |
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
|
733 |
if ncpus is not None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
734 |
min = ncpus.split('-', 1)[0] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
735 |
if min.isdigit(): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
736 |
return int(min) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
737 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
738 |
# 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
|
739 |
# number of CPUs defined there. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
740 |
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
|
741 |
if ncpus is not None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
742 |
max = ncpus.split('-', 1)[-1] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
743 |
if max.isdigit(): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
744 |
return int(max) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
745 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
746 |
# 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
|
747 |
# 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
|
748 |
# 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
|
749 |
# 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
|
750 |
# of online CPUs. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
751 |
return os.sysconf('SC_NPROCESSORS_ONLN') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
752 |
|
7266
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
753 |
def _kstat_data(self, uri): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
754 |
"""Return Kstat snapshot data via RAD as a dictionary.""" |
7266
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
755 |
if not isinstance(uri, str): |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
756 |
raise exception.NovaException("kstat URI must be string type: " |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
757 |
"%s is %s" % (uri, type(uri))) |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
758 |
|
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
759 |
if not uri.startswith("kstat:/"): |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
760 |
uri = "kstat:/" + uri |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
761 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
762 |
try: |
5610
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
763 |
self.kstat_control.update() |
7266
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
764 |
kstat_obj = self.rad_connection.get_object( |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
765 |
kstat.Kstat(), rad.client.ADRGlobPattern({"uri": uri})) |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
766 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
767 |
except Exception as reason: |
7266
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
768 |
LOG.info(_("Unable to retrieve kstat object '%s' via kstat(3RAD): " |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
769 |
"%s") % (uri, reason)) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
770 |
return None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
771 |
|
7266
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
772 |
ks_data = {} |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
773 |
for name, data in kstat_obj.getMap().items(): |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
774 |
ks_data[name] = getattr(data, KSTAT_TYPE[str(data.type)]) |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
775 |
|
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
776 |
return ks_data |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
777 |
|
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
778 |
def _sum_kstat_statistic(self, kstat_data, statistic): |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
779 |
total = 0 |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
780 |
for ks in kstat_data.values(): |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
781 |
data = ks.getMap()[statistic] |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
782 |
value = getattr(data, KSTAT_TYPE[str(data.type)]) |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
783 |
try: |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
784 |
total += value |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
785 |
except TypeError: |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
786 |
LOG.error(_("Unable to aggregate non-summable kstat %s;%s " |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
787 |
" of type %s") % (ks.getParent().uri, statistic, |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
788 |
type(value))) |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
789 |
return None |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
790 |
|
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
791 |
return total |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
792 |
|
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
793 |
def _get_kstat_statistic(self, ks, statistic): |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
794 |
if not isinstance(ks, kstat.Kstat): |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
795 |
reason = (_("Attempted to get a kstat from %s type.") % (type(ks))) |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
796 |
raise TypeError(reason) |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
797 |
|
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
798 |
try: |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
799 |
data = ks.getMap()[statistic] |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
800 |
value = getattr(data, KSTAT_TYPE[str(data.type)]) |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
801 |
except TypeError: |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
802 |
value = None |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
803 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
804 |
return value |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
805 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
806 |
def _get_cpu_time(self, zone): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
807 |
"""Return the CPU time used in nanoseconds.""" |
7475
6144ac72c2b3
25226057 nova boot will fail due to inability to get kstat values
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7266
diff
changeset
|
808 |
if zone.name is None: |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
809 |
return 0 |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
810 |
|
7475
6144ac72c2b3
25226057 nova boot will fail due to inability to get kstat values
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7266
diff
changeset
|
811 |
# Loop over the kstats for each cpu. If the cpu list changes, the |
6144ac72c2b3
25226057 nova boot will fail due to inability to get kstat values
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7266
diff
changeset
|
812 |
# gen_num for the accumulated kstat will change invalidating the |
6144ac72c2b3
25226057 nova boot will fail due to inability to get kstat values
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7266
diff
changeset
|
813 |
# result, so retry if this happens. |
7266
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
814 |
# The retry value of 3 was determined by the "we shouldn't hit this |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
815 |
# often, but if we do it should resolve quickly so try again"+1 |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
816 |
# algorithm. |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
817 |
for _attempt in range(3): |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
818 |
total = 0 |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
819 |
|
7475
6144ac72c2b3
25226057 nova boot will fail due to inability to get kstat values
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7266
diff
changeset
|
820 |
uri = "kstat:/zones/%s/cpu" % zone.name |
6144ac72c2b3
25226057 nova boot will fail due to inability to get kstat values
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7266
diff
changeset
|
821 |
accum_uri = "kstat:/zones/%s/cpu/accum/sys" % zone.name |
7266
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
822 |
|
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
823 |
initial = self._kstat_data(accum_uri) |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
824 |
cpus = self._kstat_data(uri) |
7475
6144ac72c2b3
25226057 nova boot will fail due to inability to get kstat values
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7266
diff
changeset
|
825 |
cpus.pop('pset_accum') |
6144ac72c2b3
25226057 nova boot will fail due to inability to get kstat values
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7266
diff
changeset
|
826 |
cpus.pop('accum') |
6144ac72c2b3
25226057 nova boot will fail due to inability to get kstat values
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7266
diff
changeset
|
827 |
|
6144ac72c2b3
25226057 nova boot will fail due to inability to get kstat values
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7266
diff
changeset
|
828 |
for n in cpus.keys(): |
6144ac72c2b3
25226057 nova boot will fail due to inability to get kstat values
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7266
diff
changeset
|
829 |
cpu = self._kstat_data(uri + "/%s" % n) |
6144ac72c2b3
25226057 nova boot will fail due to inability to get kstat values
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7266
diff
changeset
|
830 |
|
6144ac72c2b3
25226057 nova boot will fail due to inability to get kstat values
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7266
diff
changeset
|
831 |
total += self._sum_kstat_statistic(cpu, 'cpu_nsec_kernel_cur') |
6144ac72c2b3
25226057 nova boot will fail due to inability to get kstat values
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7266
diff
changeset
|
832 |
total += self._sum_kstat_statistic(cpu, 'cpu_nsec_user_cur') |
7266
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
833 |
|
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
834 |
final = self._kstat_data(accum_uri) |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
835 |
|
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
836 |
if initial['gen_num'] == final['gen_num']: |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
837 |
total += initial['cpu_nsec_user'] + initial['cpu_nsec_kernel'] |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
838 |
return total |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
839 |
|
7475
6144ac72c2b3
25226057 nova boot will fail due to inability to get kstat values
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7266
diff
changeset
|
840 |
LOG.error(_("Unable to get accurate cpu usage because cpu list " |
7266
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
841 |
"keeps changing")) |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
842 |
return 0 |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
843 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
844 |
def get_info(self, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
845 |
"""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
|
846 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
847 |
: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
|
848 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
849 |
Returns a InstanceInfo object |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
850 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
851 |
# 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
|
852 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
853 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
854 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
855 |
raise exception.InstanceNotFound(instance_id=name) |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
856 |
return hardware.InstanceInfo(state=self._get_state(zone), |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
857 |
max_mem_kb=self._get_max_mem(zone), |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
858 |
mem_kb=self._get_mem(zone), |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
859 |
num_cpu=self._get_num_cpu(zone), |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
860 |
cpu_time_ns=self._get_cpu_time(zone)) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
861 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
862 |
def get_num_instances(self): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
863 |
"""Return the total number of virtual machines. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
864 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
865 |
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
|
866 |
about. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
867 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
868 |
.. note:: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
869 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
870 |
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
|
871 |
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
|
872 |
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
|
873 |
efficient. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
874 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
875 |
return len(self.list_instances()) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
876 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
877 |
def instance_exists(self, instance): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
878 |
"""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
|
879 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
880 |
:param instance: The instance to lookup |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
881 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
882 |
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
|
883 |
the host, False otherwise. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
884 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
885 |
.. note:: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
886 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
887 |
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
|
888 |
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
|
889 |
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
|
890 |
efficient. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
891 |
""" |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
892 |
try: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
893 |
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
|
894 |
except NotImplementedError: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
895 |
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
|
896 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
897 |
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
|
898 |
"""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
|
899 |
of the given flavor. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
900 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
901 |
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
|
902 |
calculations are desired. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
903 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
904 |
: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
|
905 |
: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
|
906 |
""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
907 |
return {'memory_mb': 0} |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
908 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
909 |
def _get_list_zone_object(self): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
910 |
"""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
|
911 |
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
|
912 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
913 |
def list_instances(self): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
914 |
"""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
|
915 |
layer, as a list. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
916 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
917 |
# 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
|
918 |
instances_list = [] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
919 |
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
|
920 |
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
|
921 |
return instances_list |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
922 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
923 |
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
|
924 |
"""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
|
925 |
layer, as a list. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
926 |
""" |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
927 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
928 |
|
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
929 |
def _rebuild_block_devices(self, context, instance, bdms, recreate): |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
930 |
root_ci = None |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
931 |
rootmp = instance['root_device_name'] |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
932 |
for entry in bdms: |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
933 |
if entry['connection_info'] is None: |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
934 |
continue |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
935 |
|
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
936 |
if entry['device_name'] == rootmp: |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
937 |
root_ci = jsonutils.loads(entry['connection_info']) |
5948
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
938 |
# Let's make sure this is a well formed connection_info, by |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
939 |
# checking if it has a serial key that represents the |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
940 |
# volume_id. If not check to see if the block device has a |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
941 |
# volume_id, if so then assign this to the root_ci.serial. |
5948
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
942 |
# |
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
943 |
# If we cannot repair the connection_info then simply do not |
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
944 |
# return a root_ci and let the caller decide if they want to |
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
945 |
# fail or not. |
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
946 |
if root_ci.get('serial') is None: |
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
947 |
if entry.get('volume_id') is not None: |
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
948 |
root_ci['serial'] = entry['volume_id'] |
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
949 |
else: |
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
950 |
LOG.debug(_("Unable to determine the volume id for " |
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
951 |
"the connection info for the root device " |
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
952 |
"for instance '%s'") % instance['name']) |
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
953 |
root_ci = None |
bfd525bc0bf2
22991692 instance rebuild failed with Exception during message handling: 'serial'
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5847
diff
changeset
|
954 |
|
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
955 |
continue |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
956 |
|
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
957 |
if not recreate: |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
958 |
ci = jsonutils.loads(entry['connection_info']) |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
959 |
self.detach_volume(ci, instance, entry['device_name']) |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
960 |
|
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
961 |
if root_ci is None and recreate: |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
962 |
msg = (_("Unable to find the root device for instance '%s'.") |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
963 |
% instance['name']) |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
964 |
raise exception.NovaException(msg) |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
965 |
|
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
966 |
return root_ci |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
967 |
|
6260
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
968 |
def _set_instance_metahostid(self, instance): |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
969 |
"""Attempt to get the hostid from the current configured zone and |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
970 |
return the hostid. Otherwise return None, and do not set the hostid in |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
971 |
the instance |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
972 |
""" |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
973 |
hostid = instance.system_metadata.get('hostid') |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
974 |
if hostid is not None: |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
975 |
return hostid |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
976 |
|
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
977 |
zone = self._get_zone_by_name(instance['name']) |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
978 |
if zone is None: |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
979 |
return None |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
980 |
|
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
981 |
hostid = lookup_resource_property(zone, 'global', 'hostid') |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
982 |
if hostid: |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
983 |
instance.system_metadata['hostid'] = hostid |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
984 |
|
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
985 |
return hostid |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
986 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
987 |
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
|
988 |
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
|
989 |
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
|
990 |
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
|
991 |
preserve_ephemeral=False): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
992 |
"""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
|
993 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
994 |
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
|
995 |
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
|
996 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
997 |
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
|
998 |
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
|
999 |
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
|
1000 |
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
|
1001 |
up steps. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1002 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1003 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1004 |
: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
|
1005 |
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
|
1006 |
the creation of the new instance. |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1007 |
:param nova.objects.ImageMeta image_meta: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1008 |
The metadata of the image of the instance. |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1009 |
: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
|
1010 |
: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
|
1011 |
: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
|
1012 |
: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
|
1013 |
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
|
1014 |
usage. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1015 |
: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
|
1016 |
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
|
1017 |
usage. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1018 |
:param network_info: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1019 |
: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
|
1020 |
: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
|
1021 |
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
|
1022 |
: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
|
1023 |
attached to the instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
1024 |
: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
|
1025 |
partition must be preserved on rebuild |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1026 |
""" |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1027 |
if recreate: |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1028 |
instance.system_metadata['evac_from'] = instance['launched_on'] |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1029 |
instance.save() |
7263
d601ec170433
18780229 filter scheduler provides no details with bad flavor definition
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7027
diff
changeset
|
1030 |
extra_specs = self._get_flavor(instance)['extra_specs'].copy() |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1031 |
brand = extra_specs.get('zonecfg:brand', ZONE_BRAND_SOLARIS) |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1032 |
if brand == ZONE_BRAND_SOLARIS: |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1033 |
msg = (_("'%s' branded zones do not currently support " |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1034 |
"evacuation.") % brand) |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1035 |
raise exception.NovaException(msg) |
6260
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
1036 |
else: |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
1037 |
self._power_off(instance, "HALT") |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1038 |
|
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1039 |
instance.task_state = task_states.REBUILD_BLOCK_DEVICE_MAPPING |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1040 |
instance.save(expected_task_state=[task_states.REBUILDING]) |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1041 |
root_ci = self._rebuild_block_devices(context, instance, bdms, |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1042 |
recreate) |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1043 |
|
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1044 |
if recreate: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1045 |
if root_ci is not None: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1046 |
driver_type = root_ci['driver_volume_type'] |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1047 |
else: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1048 |
driver_type = 'local' |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1049 |
if driver_type not in shared_storage: |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1050 |
msg = (_("Root device is not on shared storage for instance " |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1051 |
"'%s'.") % instance['name']) |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1052 |
raise exception.NovaException(msg) |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1053 |
|
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1054 |
if not recreate: |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1055 |
self.destroy(context, instance, network_info, block_device_info) |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1056 |
if root_ci is not None: |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1057 |
self._volume_api.detach(context, root_ci['serial']) |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1058 |
self._volume_api.delete(context, root_ci['serial']) |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1059 |
|
7027
208c99e0d339
24766045 rebuild fails attempting to attach the root device after the rebuild of the vm
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7026
diff
changeset
|
1060 |
# Go ahead and remove the root bdm from the bdms so that we do |
208c99e0d339
24766045 rebuild fails attempting to attach the root device after the rebuild of the vm
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7026
diff
changeset
|
1061 |
# not trip up spawn either checking against the use of c1d0 or |
208c99e0d339
24766045 rebuild fails attempting to attach the root device after the rebuild of the vm
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7026
diff
changeset
|
1062 |
# attempting to re-attach the root device. |
208c99e0d339
24766045 rebuild fails attempting to attach the root device after the rebuild of the vm
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7026
diff
changeset
|
1063 |
bdms.objects.remove(bdms.root_bdm()) |
208c99e0d339
24766045 rebuild fails attempting to attach the root device after the rebuild of the vm
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7026
diff
changeset
|
1064 |
rootdevname = block_device_info.get('root_device_name') |
208c99e0d339
24766045 rebuild fails attempting to attach the root device after the rebuild of the vm
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7026
diff
changeset
|
1065 |
if rootdevname is not None: |
208c99e0d339
24766045 rebuild fails attempting to attach the root device after the rebuild of the vm
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7026
diff
changeset
|
1066 |
bdi_bdms = block_device_info.get('block_device_mapping') |
208c99e0d339
24766045 rebuild fails attempting to attach the root device after the rebuild of the vm
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7026
diff
changeset
|
1067 |
for entry in bdi_bdms: |
208c99e0d339
24766045 rebuild fails attempting to attach the root device after the rebuild of the vm
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7026
diff
changeset
|
1068 |
if entry['mount_device'] == rootdevname: |
208c99e0d339
24766045 rebuild fails attempting to attach the root device after the rebuild of the vm
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7026
diff
changeset
|
1069 |
bdi_bdms.remove(entry) |
208c99e0d339
24766045 rebuild fails attempting to attach the root device after the rebuild of the vm
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7026
diff
changeset
|
1070 |
break |
208c99e0d339
24766045 rebuild fails attempting to attach the root device after the rebuild of the vm
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7026
diff
changeset
|
1071 |
|
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1072 |
instance.task_state = task_states.REBUILD_SPAWNING |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1073 |
instance.save( |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1074 |
expected_task_state=[task_states.REBUILD_BLOCK_DEVICE_MAPPING]) |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1075 |
|
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1076 |
# Instead of using a boolean for 'rebuilding' scratch data, use a |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1077 |
# string because the object will translate it to a string anyways. |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1078 |
if recreate: |
7263
d601ec170433
18780229 filter scheduler provides no details with bad flavor definition
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7027
diff
changeset
|
1079 |
extra_specs = self._get_flavor(instance)['extra_specs'].copy() |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1080 |
|
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1081 |
instance.system_metadata['rebuilding'] = 'false' |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1082 |
self._create_config(context, instance, network_info, root_ci, None) |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1083 |
del instance.system_metadata['evac_from'] |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1084 |
instance.save() |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1085 |
else: |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1086 |
instance.system_metadata['rebuilding'] = 'true' |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1087 |
self.spawn(context, instance, image_meta, injected_files, |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1088 |
admin_password, network_info, block_device_info) |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1089 |
|
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1090 |
del instance.system_metadata['rebuilding'] |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1091 |
name = instance['name'] |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1092 |
zone = self._get_zone_by_name(name) |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1093 |
if zone is None: |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1094 |
raise exception.InstanceNotFound(instance_id=name) |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1095 |
|
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1096 |
if recreate: |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1097 |
zone.attach(['-x', 'initialize-hostdata']) |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1098 |
|
7027
208c99e0d339
24766045 rebuild fails attempting to attach the root device after the rebuild of the vm
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7026
diff
changeset
|
1099 |
rootmp = instance['root_device_name'] |
208c99e0d339
24766045 rebuild fails attempting to attach the root device after the rebuild of the vm
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7026
diff
changeset
|
1100 |
for entry in bdms: |
208c99e0d339
24766045 rebuild fails attempting to attach the root device after the rebuild of the vm
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7026
diff
changeset
|
1101 |
if (entry['connection_info'] is None or |
208c99e0d339
24766045 rebuild fails attempting to attach the root device after the rebuild of the vm
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7026
diff
changeset
|
1102 |
rootmp == entry['device_name']): |
208c99e0d339
24766045 rebuild fails attempting to attach the root device after the rebuild of the vm
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7026
diff
changeset
|
1103 |
continue |
208c99e0d339
24766045 rebuild fails attempting to attach the root device after the rebuild of the vm
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7026
diff
changeset
|
1104 |
|
208c99e0d339
24766045 rebuild fails attempting to attach the root device after the rebuild of the vm
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7026
diff
changeset
|
1105 |
connection_info = jsonutils.loads(entry['connection_info']) |
208c99e0d339
24766045 rebuild fails attempting to attach the root device after the rebuild of the vm
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7026
diff
changeset
|
1106 |
mount = entry['device_name'] |
208c99e0d339
24766045 rebuild fails attempting to attach the root device after the rebuild of the vm
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7026
diff
changeset
|
1107 |
self.attach_volume(context, connection_info, instance, mount) |
208c99e0d339
24766045 rebuild fails attempting to attach the root device after the rebuild of the vm
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7026
diff
changeset
|
1108 |
|
208c99e0d339
24766045 rebuild fails attempting to attach the root device after the rebuild of the vm
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7026
diff
changeset
|
1109 |
self._power_on(instance, network_info) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1110 |
|
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1111 |
if admin_password is not None: |
5312
b5fa281dd501
21660635 root-password functionality required for defcore coverage
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5311
diff
changeset
|
1112 |
# Because there is no way to make sure a zone is ready upon |
b5fa281dd501
21660635 root-password functionality required for defcore coverage
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5311
diff
changeset
|
1113 |
# returning from a boot request. We must give the zone a few |
b5fa281dd501
21660635 root-password functionality required for defcore coverage
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5311
diff
changeset
|
1114 |
# seconds to boot before attempting to set the admin password. |
b5fa281dd501
21660635 root-password functionality required for defcore coverage
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5311
diff
changeset
|
1115 |
greenthread.sleep(15) |
b5fa281dd501
21660635 root-password functionality required for defcore coverage
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5311
diff
changeset
|
1116 |
self.set_admin_password(instance, admin_password) |
b5fa281dd501
21660635 root-password functionality required for defcore coverage
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5311
diff
changeset
|
1117 |
|
7263
d601ec170433
18780229 filter scheduler provides no details with bad flavor definition
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7027
diff
changeset
|
1118 |
def _get_flavor(self, instance): |
d601ec170433
18780229 filter scheduler provides no details with bad flavor definition
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7027
diff
changeset
|
1119 |
"""Retrieve the flavor object as specified in the instance object""" |
d601ec170433
18780229 filter scheduler provides no details with bad flavor definition
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7027
diff
changeset
|
1120 |
return flavor_obj.Flavor.get_by_id( |
5191
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
1121 |
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
|
1122 |
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
|
1123 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1124 |
def _fetch_image(self, context, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1125 |
"""Fetch an image using Glance given the instance's image_ref.""" |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1126 |
glancecache_dirname = CONF.solariszones.glancecache_dirname |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1127 |
fileutils.ensure_tree(glancecache_dirname) |
6901
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1128 |
iref = instance['image_ref'] |
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1129 |
image = os.path.join(glancecache_dirname, iref) |
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1130 |
downloading = image + '.downloading' |
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1131 |
|
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1132 |
with lockutils.lock('glance-image-%s' % iref): |
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1133 |
if os.path.isfile(downloading): |
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1134 |
LOG.debug(_('Cleaning partial download of %s' % iref)) |
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1135 |
os.unlink(image) |
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1136 |
os.unlink(downloading) |
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1137 |
|
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1138 |
elif os.path.exists(image): |
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1139 |
LOG.debug(_("Using existing, cached Glance image: id %s") |
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1140 |
% iref) |
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1141 |
return image |
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1142 |
|
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1143 |
LOG.debug(_("Fetching new Glance image: id %s") % iref) |
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1144 |
try: |
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1145 |
# touch the empty .downloading file |
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1146 |
with open(downloading, 'w'): |
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1147 |
pass |
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1148 |
images.fetch(context, iref, image, instance['user_id'], |
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1149 |
instance['project_id']) |
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1150 |
os.unlink(downloading) |
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1151 |
return image |
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1152 |
except Exception as reason: |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
1153 |
LOG.exception(_("Unable to fetch Glance image: id %s: %s") |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
1154 |
% (iref, reason)) |
6901
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1155 |
raise |
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1156 |
|
2c7a24ff439f
22699868 _fetch_image method can try and build from partial image download
Drew Fisher <drew.fisher@oracle.com>
parents:
6900
diff
changeset
|
1157 |
@lockutils.synchronized('validate_image') |
5607
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
1158 |
def _validate_image(self, context, image, instance): |
5279
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1159 |
"""Validate a glance image for compatibility with the instance.""" |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1160 |
# Skip if the image was already checked and confirmed as valid. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1161 |
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
|
1162 |
return |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1163 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1164 |
try: |
5610
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
1165 |
ua = self.archive_manager.getArchive(image) |
5279
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1166 |
except Exception as ex: |
5541
e93ae190039c
22854239 Nova not expecting anything but a RAD error in call to getArchive()
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5436
diff
changeset
|
1167 |
if isinstance(ex, rad.client.ObjectError): |
e93ae190039c
22854239 Nova not expecting anything but a RAD error in call to getArchive()
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5436
diff
changeset
|
1168 |
reason = ex.get_payload().info |
e93ae190039c
22854239 Nova not expecting anything but a RAD error in call to getArchive()
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5436
diff
changeset
|
1169 |
else: |
e93ae190039c
22854239 Nova not expecting anything but a RAD error in call to getArchive()
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5436
diff
changeset
|
1170 |
reason = str(ex) |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1171 |
raise exception.ImageUnacceptable(image_id=instance['image_ref'], |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1172 |
reason=reason) |
5279
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1173 |
|
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1174 |
# Validate the image at this point to ensure: |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1175 |
# - contains one deployable system |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1176 |
deployables = ua.getArchivedSystems() |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1177 |
if len(deployables) != 1: |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1178 |
reason = _("Image must contain only a single deployable system.") |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1179 |
raise exception.ImageUnacceptable(image_id=instance['image_ref'], |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1180 |
reason=reason) |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1181 |
# - matching architecture |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1182 |
deployable_arch = str(ua.isa) |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1183 |
compute_arch = platform.processor() |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1184 |
if deployable_arch.lower() != compute_arch: |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1185 |
reason = (_("Unified Archive architecture '%s' is incompatible " |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1186 |
"with this compute host's architecture, '%s'.") |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1187 |
% (deployable_arch, compute_arch)) |
5607
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
1188 |
|
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
1189 |
# For some reason we have gotten the wrong architecture image, |
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
1190 |
# which should have been filtered by the scheduler. One reason this |
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
1191 |
# could happen is because the images architecture type is |
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
1192 |
# incorrectly set. Check for this and report a better reason. |
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
1193 |
glanceapi = glance_api() |
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
1194 |
image_meta = glanceapi.get(context, instance['image_ref']) |
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
1195 |
image_properties = image_meta.get('properties') |
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
1196 |
if image_properties.get('architecture') is None: |
6912
d4b1a12dae66
24673856 snapshot fails when instance is stopped
Drew Fisher <drew.fisher@oracle.com>
parents:
6901
diff
changeset
|
1197 |
reason = reason + (_(" The 'architecture' property is not set " |
5607
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
1198 |
"on the Glance image.")) |
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
1199 |
|
5279
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1200 |
raise exception.ImageUnacceptable(image_id=instance['image_ref'], |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1201 |
reason=reason) |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1202 |
# - single root pool only |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1203 |
if not deployables[0].rootOnly: |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1204 |
reason = _("Image contains more than one ZFS pool.") |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1205 |
raise exception.ImageUnacceptable(image_id=instance['image_ref'], |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1206 |
reason=reason) |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1207 |
# - looks like it's OK |
6c696d36d952
22471983 Nova's archive logic should account for archive RAD changes
david.comay@oracle.com
parents:
5252
diff
changeset
|
1208 |
self._validated_archives.append(instance['image_ref']) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1209 |
|
7265
078a4fa1d5a1
24933105 Flavor RAM not aligned to 256Mb causes error in nova.virt.solariszones.driver
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7264
diff
changeset
|
1210 |
def _validate_flavor(self, instance): |
078a4fa1d5a1
24933105 Flavor RAM not aligned to 256Mb causes error in nova.virt.solariszones.driver
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7264
diff
changeset
|
1211 |
"""Validate the flavor for compatibility with zone brands""" |
078a4fa1d5a1
24933105 Flavor RAM not aligned to 256Mb causes error in nova.virt.solariszones.driver
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7264
diff
changeset
|
1212 |
flavor = self._get_flavor(instance) |
078a4fa1d5a1
24933105 Flavor RAM not aligned to 256Mb causes error in nova.virt.solariszones.driver
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7264
diff
changeset
|
1213 |
extra_specs = flavor['extra_specs'].copy() |
078a4fa1d5a1
24933105 Flavor RAM not aligned to 256Mb causes error in nova.virt.solariszones.driver
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7264
diff
changeset
|
1214 |
brand = extra_specs.get('zonecfg:brand', ZONE_BRAND_SOLARIS) |
078a4fa1d5a1
24933105 Flavor RAM not aligned to 256Mb causes error in nova.virt.solariszones.driver
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7264
diff
changeset
|
1215 |
|
078a4fa1d5a1
24933105 Flavor RAM not aligned to 256Mb causes error in nova.virt.solariszones.driver
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7264
diff
changeset
|
1216 |
if brand == ZONE_BRAND_SOLARIS_KZ: |
078a4fa1d5a1
24933105 Flavor RAM not aligned to 256Mb causes error in nova.virt.solariszones.driver
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7264
diff
changeset
|
1217 |
# verify the memory is 256mb aligned |
078a4fa1d5a1
24933105 Flavor RAM not aligned to 256Mb causes error in nova.virt.solariszones.driver
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7264
diff
changeset
|
1218 |
test_size = Size('256MB') |
078a4fa1d5a1
24933105 Flavor RAM not aligned to 256Mb causes error in nova.virt.solariszones.driver
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7264
diff
changeset
|
1219 |
instance_size = Size('%sMB' % instance['memory_mb']) |
078a4fa1d5a1
24933105 Flavor RAM not aligned to 256Mb causes error in nova.virt.solariszones.driver
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7264
diff
changeset
|
1220 |
|
078a4fa1d5a1
24933105 Flavor RAM not aligned to 256Mb causes error in nova.virt.solariszones.driver
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7264
diff
changeset
|
1221 |
if instance_size.byte_value % test_size.byte_value: |
078a4fa1d5a1
24933105 Flavor RAM not aligned to 256Mb causes error in nova.virt.solariszones.driver
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7264
diff
changeset
|
1222 |
# non-zero result so it doesn't align |
078a4fa1d5a1
24933105 Flavor RAM not aligned to 256Mb causes error in nova.virt.solariszones.driver
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7264
diff
changeset
|
1223 |
raise MemoryAlignmentIncorrect( |
078a4fa1d5a1
24933105 Flavor RAM not aligned to 256Mb causes error in nova.virt.solariszones.driver
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7264
diff
changeset
|
1224 |
flavor=flavor['name'], |
078a4fa1d5a1
24933105 Flavor RAM not aligned to 256Mb causes error in nova.virt.solariszones.driver
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7264
diff
changeset
|
1225 |
memsize=str(instance['memory_mb']), |
078a4fa1d5a1
24933105 Flavor RAM not aligned to 256Mb causes error in nova.virt.solariszones.driver
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7264
diff
changeset
|
1226 |
align='256') |
078a4fa1d5a1
24933105 Flavor RAM not aligned to 256Mb causes error in nova.virt.solariszones.driver
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7264
diff
changeset
|
1227 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1228 |
def _suri_from_volume_info(self, connection_info): |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
1229 |
"""Returns a suri(5) formatted string based on connection_info. |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
1230 |
Currently supports local ZFS volume, NFS, Fibre Channel and iSCSI |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
1231 |
driver types. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1232 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1233 |
driver_type = connection_info['driver_volume_type'] |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
1234 |
if driver_type not in ['iscsi', 'fibre_channel', 'local', 'nfs']: |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1235 |
raise exception.VolumeDriverNotFound(driver_type=driver_type) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1236 |
if driver_type == 'local': |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1237 |
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
|
1238 |
elif driver_type == 'iscsi': |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1239 |
data = connection_info['data'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1240 |
# suri(5) format: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1241 |
# iscsi://<host>[:<port>]/target.<IQN>,lun.<LUN> |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1242 |
# luname-only URI format for the multipathing: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1243 |
# iscsi://<host>[:<port>]/luname.naa.<ID> |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1244 |
# Sample iSCSI connection data values: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1245 |
# target_portal: 192.168.1.244:3260 |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1246 |
# 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
|
1247 |
# target_lun: 1 |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1248 |
suri = None |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1249 |
if 'target_iqns' in data: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1250 |
target = data['target_iqns'][0] |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1251 |
target_lun = data['target_luns'][0] |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1252 |
try: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1253 |
utils.execute('/usr/sbin/iscsiadm', 'list', 'target', |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1254 |
'-vS', target) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1255 |
out, err = utils.execute('/usr/sbin/suriadm', 'lookup-uri', |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1256 |
'-t', 'iscsi', |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1257 |
'-p', 'target=%s' % target, |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1258 |
'-p', 'lun=%s' % target_lun) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1259 |
for line in [l.strip() for l in out.splitlines()]: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1260 |
if "luname.naa." in line: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1261 |
LOG.debug(_("The found luname-only URI for the " |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1262 |
"LUN '%s' is '%s'.") % |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1263 |
(target_lun, line)) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1264 |
suri = line |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1265 |
except processutils.ProcessExecutionError as ex: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1266 |
reason = ex.stderr |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1267 |
LOG.debug(_("Failed to lookup-uri for volume '%s', lun " |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1268 |
"'%s': '%s'.") % (target, target_lun, reason)) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1269 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1270 |
if suri is None: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1271 |
suri = 'iscsi://%s/target.%s,lun.%d' % (data['target_portal'], |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1272 |
data['target_iqn'], |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1273 |
data['target_lun']) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1274 |
# TODO(npower): need to handle CHAP authentication also |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
1275 |
elif driver_type == 'nfs': |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
1276 |
data = connection_info['data'] |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
1277 |
suri = ( |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
1278 |
'nfs://cinder:cinder@%s/%s' % |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
1279 |
(data['export'].replace(':', ''), data['name']) |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
1280 |
) |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
1281 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1282 |
elif driver_type == 'fibre_channel': |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1283 |
data = connection_info['data'] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1284 |
target_wwn = data['target_wwn'] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1285 |
# 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
|
1286 |
hbas = self._get_fc_hbas() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1287 |
if not hbas: |
6070
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1288 |
LOG.error(_("Cannot attach Fibre Channel volume because " |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1289 |
"no Fibre Channel HBA initiators were found")) |
1990
c1c6cc703d7a
18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
1944
diff
changeset
|
1290 |
raise exception.InvalidVolume( |
c1c6cc703d7a
18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
1944
diff
changeset
|
1291 |
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
|
1292 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1293 |
target_lun = data['target_lun'] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1294 |
# 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
|
1295 |
# 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
|
1296 |
# 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
|
1297 |
# a refresh. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1298 |
for wwpn in self._get_fc_wwpns(): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1299 |
utils.execute('/usr/sbin/fcinfo', 'remote-port', '-p', wwpn) |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1300 |
|
6070
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1301 |
suri = self._lookup_fc_volume_suri(target_wwn, target_lun) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1302 |
return suri |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1303 |
|
6070
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1304 |
def _lookup_fc_volume_suri(self, target_wwn, target_lun): |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1305 |
"""Searching the LU based URI for the FC LU. """ |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1306 |
wwns = [] |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1307 |
if isinstance(target_wwn, list): |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1308 |
wwns = target_wwn |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1309 |
else: |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1310 |
wwns.append(target_wwn) |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1311 |
|
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1312 |
for _none in range(3): |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1313 |
for wwn in wwns: |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1314 |
try: |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1315 |
out, err = utils.execute('/usr/sbin/suriadm', 'lookup-uri', |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1316 |
'-p', 'target=naa.%s' % wwn, |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1317 |
'-p', 'lun=%s' % target_lun) |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1318 |
for line in [l.strip() for l in out.splitlines()]: |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1319 |
if line.startswith("lu:luname.naa."): |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1320 |
return line |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1321 |
except processutils.ProcessExecutionError as ex: |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1322 |
reason = ex.stderr |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1323 |
LOG.debug(_("Failed to lookup-uri for volume '%s', lun " |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1324 |
"%s: %s") % (wwn, target_lun, reason)) |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1325 |
greenthread.sleep(2) |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1326 |
else: |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1327 |
msg = _("Unable to lookup URI of Fibre Channel volume " |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1328 |
"with lun '%s'." % target_lun) |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1329 |
raise exception.InvalidVolume(reason=msg) |
87daa7413b2d
23294485 Cinder ZFSFCDriver fails to find the right target wwn
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6031
diff
changeset
|
1330 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1331 |
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
|
1332 |
"""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
|
1333 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1334 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1335 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1336 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1337 |
# 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
|
1338 |
zonecfg_items = [ |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1339 |
'bootargs', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1340 |
'brand', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1341 |
'hostid' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1342 |
] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1343 |
if brand == ZONE_BRAND_SOLARIS: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1344 |
zonecfg_items.extend( |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1345 |
['file-mac-profile', 'fs-allowed', 'limitpriv']) |
6178
a11e4cbcf3d2
23523730 zonecfg:cpu-arch missing from supported zone properties in extra_specs
david.comay@oracle.com
parents:
6123
diff
changeset
|
1346 |
else: |
a11e4cbcf3d2
23523730 zonecfg:cpu-arch missing from supported zone properties in extra_specs
david.comay@oracle.com
parents:
6123
diff
changeset
|
1347 |
zonecfg_items.extend(['cpu-arch']) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1348 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1349 |
with ZoneConfig(zone) as zc: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1350 |
for key, value in extra_specs.iteritems(): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1351 |
# Ignore not-zonecfg-scoped brand properties. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1352 |
if not key.startswith('zonecfg:'): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1353 |
continue |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1354 |
_scope, prop = key.split(':', 1) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1355 |
# Ignore the 'brand' property if present. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1356 |
if prop == 'brand': |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1357 |
continue |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1358 |
# 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
|
1359 |
if prop not in zonecfg_items: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1360 |
LOG.warning(_("Ignoring unsupported zone property '%s' " |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1361 |
"set on flavor for instance '%s'") |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1362 |
% (prop, name)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1363 |
continue |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1364 |
zc.setprop('global', prop, value) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1365 |
|
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1366 |
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
|
1367 |
"""Create a (Cinder) volume service backed boot volume""" |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1368 |
boot_vol_az = CONF.solariszones.boot_volume_az |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1369 |
boot_vol_type = CONF.solariszones.boot_volume_type |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1370 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1371 |
vol = self._volume_api.create( |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1372 |
context, instance['root_gb'], |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1373 |
instance['hostname'] + "-" + self._rootzpool_suffix, |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1374 |
"Boot volume for instance '%s' (%s)" |
6014
83c60536394d
PSARC/2016/242 Nova boot volume placement
Niall Power <niall.power@oracle.com>
parents:
5949
diff
changeset
|
1375 |
% (instance['name'], instance['uuid']), |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1376 |
volume_type=boot_vol_type, availability_zone=boot_vol_az) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1377 |
# 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
|
1378 |
# 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
|
1379 |
while True: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1380 |
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
|
1381 |
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
|
1382 |
return volume |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1383 |
greenthread.sleep(1) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1384 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1385 |
except Exception as reason: |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
1386 |
LOG.exception(_("Unable to create root zpool volume for instance " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
1387 |
"'%s': %s") % (instance['name'], reason)) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1388 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1389 |
|
5191
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
1390 |
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
|
1391 |
"""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
|
1392 |
instance_uuid = instance['uuid'] |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1393 |
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
|
1394 |
|
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1395 |
connector = self.get_volume_connector(instance) |
7583
612b249c2397
25202866 Nova resize fails with Pure storage iSCSI back-end
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7475
diff
changeset
|
1396 |
connection_info = self._initialize_volume_connection(context, |
612b249c2397
25202866 Nova resize fails with Pure storage iSCSI back-end
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7475
diff
changeset
|
1397 |
volume_id, |
612b249c2397
25202866 Nova resize fails with Pure storage iSCSI back-end
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7475
diff
changeset
|
1398 |
connector) |
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1399 |
|
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1400 |
# 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
|
1401 |
# 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
|
1402 |
# 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
|
1403 |
# when using a zpool within another zpool on the same system. |
7263
d601ec170433
18780229 filter scheduler provides no details with bad flavor definition
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7027
diff
changeset
|
1404 |
extra_specs = self._get_flavor(instance)['extra_specs'].copy() |
5191
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
1405 |
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
|
1406 |
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
|
1407 |
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
|
1408 |
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
|
1409 |
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
|
1410 |
"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
|
1411 |
"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
|
1412 |
"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
|
1413 |
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
|
1414 |
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
|
1415 |
# 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
|
1416 |
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
|
1417 |
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
|
1418 |
# 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
|
1419 |
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
|
1420 |
# 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
|
1421 |
# 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
|
1422 |
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
|
1423 |
|
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1424 |
# 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
|
1425 |
# 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
|
1426 |
# 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
|
1427 |
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
|
1428 |
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
|
1429 |
"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
|
1430 |
"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
|
1431 |
"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
|
1432 |
"zones.") |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1433 |
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
|
1434 |
# 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
|
1435 |
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
|
1436 |
# 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
|
1437 |
# 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
|
1438 |
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
|
1439 |
"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
|
1440 |
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
|
1441 |
|
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
1442 |
# Volume looks OK to use. Notify Cinder of the attachment. |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1443 |
self._volume_api.attach(context, volume_id, instance_uuid, mountpoint) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1444 |
return connection_info |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1445 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1446 |
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
|
1447 |
"""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
|
1448 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1449 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1450 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1451 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1452 |
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
|
1453 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1454 |
with ZoneConfig(zone) as zc: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1455 |
# 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
|
1456 |
if brand == ZONE_BRAND_SOLARIS_KZ: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1457 |
zc.zone.setResourceProperties( |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1458 |
zonemgr.Resource("device", |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1459 |
[zonemgr.Property("bootpri", "0")]), |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1460 |
[zonemgr.Property("storage", suri)]) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1461 |
else: |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1462 |
zc.addresource(ROOTZPOOL_RESOURCE, |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1463 |
[zonemgr.Property("storage", listvalue=[suri])], |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1464 |
ignore_exists=True) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1465 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1466 |
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
|
1467 |
"""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
|
1468 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1469 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1470 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1471 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1472 |
# 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
|
1473 |
# '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
|
1474 |
if brand == ZONE_BRAND_SOLARIS: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1475 |
vcpu_resource = 'capped-cpu' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1476 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1477 |
vcpu_resource = 'virtual-cpu' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1478 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1479 |
# 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
|
1480 |
# 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
|
1481 |
with ZoneConfig(zone) as zc: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1482 |
zc.setprop(vcpu_resource, 'ncpus', str(vcpus)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1483 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1484 |
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
|
1485 |
"""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
|
1486 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1487 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1488 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1489 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1490 |
# 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
|
1491 |
# '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
|
1492 |
if brand == ZONE_BRAND_SOLARIS: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1493 |
mem_resource = 'swap' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1494 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1495 |
mem_resource = 'physical' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1496 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1497 |
with ZoneConfig(zone) as zc: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1498 |
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
|
1499 |
|
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1500 |
def _ovs_add_port(self, instance, vif, port): |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1501 |
if vif['type'] == 'binding_failed': |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1502 |
LOG.error(_('Port binding has failed for VIF %s. Ensure that ' |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1503 |
'OVS agent is running and/or bridge_mappings are ' |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1504 |
'correctly configured. VM will not have network ' |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1505 |
'connectivity') % vif) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1506 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1507 |
ovs_bridge = CONF.neutron.ovs_bridge |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1508 |
cmd = ['/usr/sbin/ovs-vsctl', |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1509 |
'--timeout=%s' % CONF.ovs_vsctl_timeout, |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1510 |
'--', '--if-exists', 'del-port', ovs_bridge, port, |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1511 |
'--', 'add-port', ovs_bridge, port, |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1512 |
'--', 'set', 'Interface', port, |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1513 |
'external-ids:iface-id=%s' % vif['id'], |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1514 |
'external-ids:iface-status=active', |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1515 |
'external-ids:attached-mac=%s' % vif['address'], |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1516 |
'external-ids:vm-uuid=%s' % instance['uuid'] |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1517 |
] |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1518 |
try: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1519 |
out, err = utils.execute(*cmd) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1520 |
except Exception as reason: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1521 |
msg = (_("Failed to add port '%s' with MAC address '%s' to " |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1522 |
"OVS Bridge '%s': %s") |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1523 |
% (port, vif['address'], ovs_bridge, reason)) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1524 |
raise exception.NovaException(msg) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1525 |
LOG.debug(_('Successfully added port %s with MAC adddress %s') % |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1526 |
(port, vif['address'])) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1527 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1528 |
def _ovs_delete_port(self, port, log_warnings=False): |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1529 |
ovs_bridge = CONF.neutron.ovs_bridge |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1530 |
cmd = ['/usr/sbin/ovs-vsctl', |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1531 |
'--timeout=%s' % CONF.ovs_vsctl_timeout, |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1532 |
'--', '--if-exists', 'del-port', ovs_bridge, port] |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1533 |
try: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1534 |
out, err = utils.execute(*cmd) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1535 |
LOG.debug(_('Removed port %s from the OVS bridge %s') % |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1536 |
(port, ovs_bridge)) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1537 |
except Exception as reason: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1538 |
msg = (_("Unable to remove port '%s' from the OVS " |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1539 |
"bridge '%s': %s") % (port, ovs_bridge, reason)) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1540 |
if log_warnings: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1541 |
LOG.warning(msg) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1542 |
else: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1543 |
raise nova.exception.NovaException(msg) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1544 |
|
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1545 |
def _plug_vifs(self, instance, network_info): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1546 |
if not network_info: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1547 |
LOG.debug(_("Instance has no VIF. Nothing to plug.")) |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1548 |
return |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1549 |
|
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1550 |
# first find out all the anets for a given instance |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1551 |
try: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1552 |
out, err = utils.execute('/usr/sbin/dladm', 'show-vnic', |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1553 |
'-z', instance['name'], |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1554 |
'-po', 'link,macaddress') |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1555 |
except Exception as reason: |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1556 |
msg = (_("Unable to get interfaces for instance '%s': %s") |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1557 |
% (instance['name'], reason)) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1558 |
raise exception.NovaException(msg) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1559 |
|
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1560 |
anetdict = {} |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1561 |
for anet_maddr in out.strip().splitlines(): |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1562 |
anet, maddr = anet_maddr.strip().split(':', 1) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1563 |
maddr = maddr.replace('\\', '') |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1564 |
maddr = ''.join(['%02x' % int(b, 16) for b in maddr.split(':')]) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1565 |
anetdict[maddr] = anet |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1566 |
|
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1567 |
LOG.debug(_("List of instance %s's anets: %s") |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1568 |
% (instance['name'], anetdict)) |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1569 |
# we now have a list of VNICs that belong to the VM |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1570 |
# we need to map the VNIC to the bridge |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1571 |
for vif in network_info: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1572 |
vif_maddr = ''.join(['%02x' % int(b, 16) for b in |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1573 |
vif['address'].split(':')]) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1574 |
anet = anetdict.get(vif_maddr) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1575 |
if anet is None: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1576 |
LOG.error(_('Failed to add port %s connected to network %s ' |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1577 |
'to instance %s') |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1578 |
% (vif['ovs_interfaceid'], vif['network']['id'], |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1579 |
instance['name'])) |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1580 |
continue |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1581 |
self._ovs_add_port(instance, vif, anet) |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1582 |
|
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1583 |
def _unplug_vifs(self, instance): |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1584 |
ovs_bridge = CONF.neutron.ovs_bridge |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1585 |
# remove the anets from the OVS bridge |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1586 |
cmd = ['/usr/sbin/ovs-vsctl', '--timeout=%s' % CONF.ovs_vsctl_timeout, |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1587 |
'list-ports', ovs_bridge] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1588 |
try: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1589 |
out, err = utils.execute(*cmd) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1590 |
except Exception as reason: |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1591 |
msg = (_("Unable to get interfaces for instance '%s': %s") |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1592 |
% (instance['name'], reason)) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1593 |
raise exception.NovaException(msg) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1594 |
|
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1595 |
for port in out.strip().splitlines(): |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1596 |
if port.split('/')[0] != instance['name']: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1597 |
continue |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1598 |
self._ovs_delete_port(port, log_warnings=True) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1599 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1600 |
def _set_ovs_info(self, context, zone, brand, first_anet, vif): |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1601 |
# Need to be admin to retrieve provider:network_type attribute |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1602 |
network_plugin = neutronv2_api.get_client(context, admin=True) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1603 |
network = network_plugin.show_network( |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1604 |
vif['network']['id'])['network'] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1605 |
network_type = network['provider:network_type'] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1606 |
lower_link = None |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1607 |
if network_type == 'vxlan': |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1608 |
lower_link = 'ovs.vxlan1' |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1609 |
elif network_type in ['vlan', 'flat']: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1610 |
physical_network = network['provider:physical_network'] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1611 |
# retrieve the other_config information from Open_vSwitch table |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1612 |
try: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1613 |
results = get_ovsdb_info('Open_vSwitch', ['other_config']) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1614 |
except Exception as err: |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
1615 |
LOG.exception(_("Failed to retrieve other_config: %s"), err) |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1616 |
raise |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1617 |
|
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1618 |
other_config = results[0]['other_config'] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1619 |
if not other_config: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1620 |
msg = (_("'other_config' column in 'Open_vSwitch' OVSDB table " |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1621 |
"is not configured. Please configure it so that the " |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1622 |
"lower-link can be determined for the instance's " |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1623 |
"interface.")) |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1624 |
LOG.error(msg) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1625 |
raise exception.NovaException(msg) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1626 |
bridge_mappings = other_config.get('bridge_mappings') |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1627 |
if not bridge_mappings: |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1628 |
msg = (_("'bridge_mappings' info is not set in the " |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1629 |
"'other_config' column of 'Open_vSwitch' OVSDB " |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1630 |
"table. Please configure it so that the lower-link " |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1631 |
"can be determined for the instance's interface.")) |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1632 |
LOG.error(msg) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1633 |
raise exception.NovaException(msg) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1634 |
for bridge_mapping in bridge_mappings.split(','): |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1635 |
if physical_network in bridge_mapping: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1636 |
lower_link = bridge_mapping.split(':')[1] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1637 |
break |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1638 |
if not lower_link: |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1639 |
msg = (_("Failed to determine the lower_link for vif '%s'.") % |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1640 |
(vif)) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1641 |
LOG.error(msg) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1642 |
raise exception.NovaException(msg) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1643 |
else: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1644 |
# TYPE_GRE and TYPE_LOCAL |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1645 |
msg = (_("Unsupported network type: %s") % network_type) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1646 |
LOG.error(msg) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1647 |
raise exception.NovaException(msg) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1648 |
|
6283
20926a1ac3fe
23643050 MTU attribute support for Neutron Network
chaithan.prakash@oracle.com <chaithan.prakash@oracle.com>
parents:
6260
diff
changeset
|
1649 |
mtu = network['mtu'] |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1650 |
with ZoneConfig(zone) as zc: |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1651 |
if first_anet: |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1652 |
zc.setprop('anet', 'lower-link', lower_link) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1653 |
zc.setprop('anet', 'configure-allowed-address', 'false') |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1654 |
zc.setprop('anet', 'mac-address', vif['address']) |
6283
20926a1ac3fe
23643050 MTU attribute support for Neutron Network
chaithan.prakash@oracle.com <chaithan.prakash@oracle.com>
parents:
6260
diff
changeset
|
1655 |
if mtu > 0: |
20926a1ac3fe
23643050 MTU attribute support for Neutron Network
chaithan.prakash@oracle.com <chaithan.prakash@oracle.com>
parents:
6260
diff
changeset
|
1656 |
zc.setprop('anet', 'mtu', str(mtu)) |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1657 |
else: |
6283
20926a1ac3fe
23643050 MTU attribute support for Neutron Network
chaithan.prakash@oracle.com <chaithan.prakash@oracle.com>
parents:
6260
diff
changeset
|
1658 |
props = [zonemgr.Property('lower-link', lower_link), |
20926a1ac3fe
23643050 MTU attribute support for Neutron Network
chaithan.prakash@oracle.com <chaithan.prakash@oracle.com>
parents:
6260
diff
changeset
|
1659 |
zonemgr.Property('configure-allowed-address', |
20926a1ac3fe
23643050 MTU attribute support for Neutron Network
chaithan.prakash@oracle.com <chaithan.prakash@oracle.com>
parents:
6260
diff
changeset
|
1660 |
'false'), |
20926a1ac3fe
23643050 MTU attribute support for Neutron Network
chaithan.prakash@oracle.com <chaithan.prakash@oracle.com>
parents:
6260
diff
changeset
|
1661 |
zonemgr.Property('mac-address', vif['address'])] |
20926a1ac3fe
23643050 MTU attribute support for Neutron Network
chaithan.prakash@oracle.com <chaithan.prakash@oracle.com>
parents:
6260
diff
changeset
|
1662 |
if mtu > 0: |
20926a1ac3fe
23643050 MTU attribute support for Neutron Network
chaithan.prakash@oracle.com <chaithan.prakash@oracle.com>
parents:
6260
diff
changeset
|
1663 |
props.append(zonemgr.Property('mtu', str(mtu))) |
20926a1ac3fe
23643050 MTU attribute support for Neutron Network
chaithan.prakash@oracle.com <chaithan.prakash@oracle.com>
parents:
6260
diff
changeset
|
1664 |
zc.addresource('anet', props) |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1665 |
|
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1666 |
prop_filter = [zonemgr.Property('mac-address', vif['address'])] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1667 |
if brand == ZONE_BRAND_SOLARIS: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1668 |
anetname = lookup_resource_property(zc.zone, 'anet', |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1669 |
'linkname', prop_filter) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1670 |
else: |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1671 |
anetid = lookup_resource_property(zc.zone, 'anet', 'id', |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1672 |
prop_filter) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1673 |
anetname = 'net%s' % anetid |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1674 |
return anetname |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1675 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1676 |
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
|
1677 |
sc_dir): |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
1678 |
"""add networking information to the zone.""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1679 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1680 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1681 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1682 |
|
5190
fc9c815fce00
20410887 Solaris Nova driver should be resilient when network info is None
david.comay@oracle.com
parents:
4982
diff
changeset
|
1683 |
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
|
1684 |
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
|
1685 |
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
|
1686 |
zc.removeresources("anet", |
fc9c815fce00
20410887 Solaris Nova driver should be resilient when network info is None
david.comay@oracle.com
parents:
4982
diff
changeset
|
1687 |
[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
|
1688 |
else: |
fc9c815fce00
20410887 Solaris Nova driver should be resilient when network info is None
david.comay@oracle.com
parents:
4982
diff
changeset
|
1689 |
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
|
1690 |
return |
fc9c815fce00
20410887 Solaris Nova driver should be resilient when network info is None
david.comay@oracle.com
parents:
4982
diff
changeset
|
1691 |
|
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1692 |
for vifid, vif in enumerate(network_info): |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1693 |
LOG.debug("%s", jsonutils.dumps(vif, indent=5)) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1694 |
|
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1695 |
ip = vif['network']['subnets'][0]['ips'][0]['address'] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1696 |
cidr = vif['network']['subnets'][0]['cidr'] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1697 |
ip_cidr = "%s/%s" % (ip, cidr.split('/')[1]) |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1698 |
ip_version = vif['network']['subnets'][0]['version'] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1699 |
dhcp_server = \ |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1700 |
vif['network']['subnets'][0]['meta'].get('dhcp_server') |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1701 |
enable_dhcp = dhcp_server is not None |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1702 |
route = vif['network']['subnets'][0]['gateway']['address'] |
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1703 |
dns_list = vif['network']['subnets'][0]['dns'] |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1704 |
nameservers = [] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1705 |
for dns in dns_list: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1706 |
if dns['type'] == 'dns': |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1707 |
nameservers.append(dns['address']) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1708 |
|
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1709 |
anetname = self._set_ovs_info(context, zone, brand, vifid == 0, |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1710 |
vif) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1711 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1712 |
# create the required sysconfig file (or skip if this is part of a |
5436
2c7413fb2a81
22691630 attempting to resize or evacuate with a network is broken
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5405
diff
changeset
|
1713 |
# resize or evacuate process) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1714 |
tstate = instance['task_state'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1715 |
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
|
1716 |
task_states.RESIZE_REVERTING, |
5436
2c7413fb2a81
22691630 attempting to resize or evacuate with a network is broken
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5405
diff
changeset
|
1717 |
task_states.RESIZE_MIGRATING, |
2c7413fb2a81
22691630 attempting to resize or evacuate with a network is broken
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5405
diff
changeset
|
1718 |
task_states.REBUILD_SPAWNING] or \ |
2c7413fb2a81
22691630 attempting to resize or evacuate with a network is broken
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5405
diff
changeset
|
1719 |
(tstate == task_states.REBUILD_SPAWNING and |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1720 |
instance.system_metadata['rebuilding'] == 'true'): |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1721 |
if enable_dhcp: |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1722 |
tree = sysconfig.create_ncp_defaultfixed('dhcp', |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1723 |
anetname, vifid, |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1724 |
ip_version) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1725 |
else: |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1726 |
host_routes = vif['network']['subnets'][0]['routes'] |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1727 |
tree = sysconfig.create_ncp_defaultfixed('static', |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1728 |
anetname, vifid, |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1729 |
ip_version, |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1730 |
ip_cidr, route, |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1731 |
nameservers, |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1732 |
host_routes) |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1733 |
|
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
1734 |
fp = os.path.join(sc_dir, 'zone-network-%d.xml' % vifid) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1735 |
sysconfig.create_sc_profile(fp, tree) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1736 |
|
4781
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
1737 |
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
|
1738 |
"""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
|
1739 |
""" |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
1740 |
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
|
1741 |
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
|
1742 |
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
|
1743 |
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
|
1744 |
|
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1745 |
path = os.path.join(CONF.solariszones.zones_suspend_path, |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1746 |
'%{zonename}') |
4781
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
1747 |
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
|
1748 |
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
|
1749 |
|
4695
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1750 |
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
|
1751 |
"""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
|
1752 |
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
|
1753 |
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
|
1754 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1755 |
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
|
1756 |
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
|
1757 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1758 |
root_account_needed = True |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1759 |
hostname_needed = True |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1760 |
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
|
1761 |
name = instance.get('hostname') |
4695
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1762 |
encrypted_password = None |
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1763 |
|
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1764 |
# 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
|
1765 |
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
|
1766 |
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
|
1767 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1768 |
# find all XML files in sc_dir |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1769 |
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
|
1770 |
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
|
1771 |
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
|
1772 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1773 |
# 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
|
1774 |
if filter(usercheck, fileroot.findall('service')): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1775 |
# 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
|
1776 |
# 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
|
1777 |
# 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
|
1778 |
pgs = fileroot.iter('property_group') |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1779 |
for pg in pgs: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1780 |
if pg.attrib.get('name') == 'root_account': |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1781 |
root_account_needed = False |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1782 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1783 |
# look for identity properties |
1908
702ae3973fcc
18793920 nova traceback when provided multiple SMF profiles
Drew Fisher <drew.fisher@oracle.com>
parents:
1840
diff
changeset
|
1784 |
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
|
1785 |
for props in fileroot.iter('propval'): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1786 |
if props.attrib.get('name') == 'nodename': |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1787 |
hostname_needed = False |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1788 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1789 |
# 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
|
1790 |
# profile(s) if needed. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1791 |
if root_account_needed: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1792 |
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
|
1793 |
|
4695
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1794 |
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
|
1795 |
# store password for horizon retrieval |
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1796 |
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
|
1797 |
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
|
1798 |
instance.system_metadata.update( |
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1799 |
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
|
1800 |
instance.save() |
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1801 |
|
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1802 |
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
|
1803 |
# 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
|
1804 |
# 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
|
1805 |
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
|
1806 |
sshkey=sshkey, password=encrypted_password) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1807 |
else: |
4695
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1808 |
# 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
|
1809 |
# and password is none |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1810 |
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
|
1811 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1812 |
sysconfig.create_sc_profile(fp, tree) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1813 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1814 |
elif sshkey is not None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1815 |
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
|
1816 |
tree = sysconfig.create_root_ssh_keys(sshkey) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1817 |
sysconfig.create_sc_profile(fp, tree) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1818 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1819 |
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
|
1820 |
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
|
1821 |
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
|
1822 |
|
4695
0aecdc531b77
19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4692
diff
changeset
|
1823 |
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
|
1824 |
sc_dir, admin_password=None): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1825 |
"""Create a new Solaris Zone configuration.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1826 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1827 |
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
|
1828 |
raise exception.InstanceExists(name=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1829 |
|
7263
d601ec170433
18780229 filter scheduler provides no details with bad flavor definition
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7027
diff
changeset
|
1830 |
flavor = self._get_flavor(instance) |
d601ec170433
18780229 filter scheduler provides no details with bad flavor definition
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7027
diff
changeset
|
1831 |
extra_specs = flavor['extra_specs'].copy() |
5191
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
1832 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1833 |
# If unspecified, default zone brand is ZONE_BRAND_SOLARIS |
7263
d601ec170433
18780229 filter scheduler provides no details with bad flavor definition
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7027
diff
changeset
|
1834 |
brand = extra_specs.get('zonecfg:brand') |
d601ec170433
18780229 filter scheduler provides no details with bad flavor definition
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7027
diff
changeset
|
1835 |
if brand is None: |
d601ec170433
18780229 filter scheduler provides no details with bad flavor definition
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7027
diff
changeset
|
1836 |
LOG.warning(_("'zonecfg:brand' key not found in extra specs for " |
d601ec170433
18780229 filter scheduler provides no details with bad flavor definition
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7027
diff
changeset
|
1837 |
"flavor '%s'. Defaulting to 'solaris'" |
d601ec170433
18780229 filter scheduler provides no details with bad flavor definition
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7027
diff
changeset
|
1838 |
% flavor['name'])) |
d601ec170433
18780229 filter scheduler provides no details with bad flavor definition
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7027
diff
changeset
|
1839 |
|
d601ec170433
18780229 filter scheduler provides no details with bad flavor definition
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7027
diff
changeset
|
1840 |
brand = ZONE_BRAND_SOLARIS |
d601ec170433
18780229 filter scheduler provides no details with bad flavor definition
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7027
diff
changeset
|
1841 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1842 |
template = ZONE_BRAND_TEMPLATE.get(brand) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1843 |
# 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
|
1844 |
if template is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1845 |
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
|
1846 |
% (brand, name))) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1847 |
raise exception.NovaException(msg) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1848 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1849 |
tstate = instance['task_state'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1850 |
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
|
1851 |
task_states.RESIZE_REVERTING, |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
1852 |
task_states.RESIZE_MIGRATING, |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1853 |
task_states.REBUILD_SPAWNING] or \ |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
1854 |
(tstate == task_states.REBUILD_SPAWNING and |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1855 |
instance.system_metadata['rebuilding'] == 'true'): |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1856 |
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
|
1857 |
if sc_profile is not None: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1858 |
if os.path.isfile(sc_profile): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1859 |
shutil.copy(sc_profile, sc_dir) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1860 |
elif os.path.isdir(sc_profile): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1861 |
shutil.copytree(sc_profile, |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1862 |
os.path.join(sc_dir, 'sysconfig')) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1863 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
1864 |
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
|
1865 |
|
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
1866 |
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
|
1867 |
% (name, instance['display_name'])) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1868 |
try: |
5610
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
1869 |
self.zone_manager.create(name, None, template) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1870 |
self._set_global_properties(name, extra_specs, brand) |
6260
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
1871 |
hostid = instance.system_metadata.get('hostid') |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
1872 |
if hostid: |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
1873 |
zone = self._get_zone_by_name(name) |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
1874 |
with ZoneConfig(zone) as zc: |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
1875 |
zc.setprop('global', 'hostid', hostid) |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
1876 |
|
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
1877 |
if connection_info is not None: |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1878 |
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
|
1879 |
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
|
1880 |
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
|
1881 |
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
|
1882 |
sc_dir) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1883 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1884 |
reason = zonemgr_strerror(ex) |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
1885 |
LOG.exception(_("Unable to create configuration for instance '%s' " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
1886 |
"via zonemgr(3RAD): %s") % (name, reason)) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1887 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1888 |
|
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1889 |
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
|
1890 |
"""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
|
1891 |
# 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
|
1892 |
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
|
1893 |
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
|
1894 |
"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
|
1895 |
"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
|
1896 |
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
|
1897 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1898 |
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
|
1899 |
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
|
1900 |
"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
|
1901 |
"terminal/xterm'") % XTERM_PATH) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1902 |
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
|
1903 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1904 |
name = instance['name'] |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1905 |
# 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
|
1906 |
try: |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1907 |
out, err = utils.execute('/usr/sbin/svccfg', |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1908 |
'-s', VNC_CONSOLE_BASE_FMRI, 'add', name) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1909 |
except processutils.ProcessExecutionError as ex: |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1910 |
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
|
1911 |
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
|
1912 |
"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
|
1913 |
return |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1914 |
reason = ex.stderr |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
1915 |
LOG.exception(_("Unable to create zone VNC console SMF service " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
1916 |
"'{0}': {1}").format(VNC_CONSOLE_BASE_FMRI + ':' + |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
1917 |
name, reason)) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1918 |
raise |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1919 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1920 |
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
|
1921 |
"""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
|
1922 |
name = instance['name'] |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1923 |
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
|
1924 |
# 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
|
1925 |
try: |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1926 |
out, err = utils.execute('/usr/sbin/svccfg', |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1927 |
'-s', VNC_CONSOLE_BASE_FMRI, 'delete', |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
1928 |
name) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1929 |
except processutils.ProcessExecutionError as ex: |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1930 |
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
|
1931 |
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
|
1932 |
"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
|
1933 |
% name) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1934 |
return |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1935 |
reason = ex.stderr |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
1936 |
LOG.exception(_("Unable to delete zone VNC console SMF service " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
1937 |
"'%s': %s") |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
1938 |
% (VNC_CONSOLE_BASE_FMRI + ':' + name, reason)) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1939 |
raise |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1940 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1941 |
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
|
1942 |
"""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
|
1943 |
name = instance['name'] |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1944 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1945 |
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
|
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: |
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
|
1948 |
# 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
|
1949 |
# 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
|
1950 |
# 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
|
1951 |
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
|
1952 |
'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
|
1953 |
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
|
1954 |
'refresh') |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1955 |
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
|
1956 |
console_fmri) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1957 |
except processutils.ProcessExecutionError as ex: |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1958 |
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
|
1959 |
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
|
1960 |
"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
|
1961 |
% name) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1962 |
return |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1963 |
reason = ex.stderr |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
1964 |
LOG.exception(_("Unable to start zone VNC console SMF service " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
1965 |
"'%s': %s") % (console_fmri, reason)) |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1966 |
raise |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1967 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1968 |
# 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
|
1969 |
greenthread.sleep(2) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1970 |
while True: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1971 |
try: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1972 |
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
|
1973 |
console_fmri) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1974 |
state = out.strip() |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1975 |
if state == 'online': |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1976 |
break |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1977 |
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
|
1978 |
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
|
1979 |
"'%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
|
1980 |
% (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
|
1981 |
raise exception.ConsoleNotFoundForInstance( |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1982 |
instance_uuid=instance['uuid']) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1983 |
# 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
|
1984 |
# 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
|
1985 |
greenthread.sleep(2) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1986 |
except processutils.ProcessExecutionError as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1987 |
reason = ex.stderr |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
1988 |
LOG.exception(_("Error querying state of zone VNC console SMF " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
1989 |
"service '%s': %s") % (console_fmri, reason)) |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
1990 |
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
|
1991 |
# 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
|
1992 |
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
|
1993 |
# 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
|
1994 |
# 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
|
1995 |
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
|
1996 |
'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
|
1997 |
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
|
1998 |
'refresh') |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
1999 |
except processutils.ProcessExecutionError as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2000 |
reason = ex.stderr |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2001 |
LOG.exception(_("Unable to update 'vnc/nova-enabled' property for " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2002 |
"zone VNC console SMF service '%s': %s") |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2003 |
% (console_fmri, reason)) |
4553
13705ca3643b
21038378 Nova VNC console not accessible in multi-node and multi-network configuration
Niall Power <niall.power@oracle.com>
parents:
4551
diff
changeset
|
2004 |
raise |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2005 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2006 |
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
|
2007 |
"""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
|
2008 |
name = instance['name'] |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2009 |
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
|
2010 |
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
|
2011 |
"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
|
2012 |
return |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2013 |
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
|
2014 |
# 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
|
2015 |
try: |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2016 |
out, err = utils.execute('/usr/sbin/svcadm', 'disable', |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2017 |
'-s', console_fmri) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2018 |
except processutils.ProcessExecutionError as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2019 |
reason = ex.stderr |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2020 |
LOG.exception(_("Unable to disable zone VNC console SMF service " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2021 |
"'%s': %s") % (console_fmri, reason)) |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2022 |
# 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
|
2023 |
# 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
|
2024 |
# 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
|
2025 |
try: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2026 |
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
|
2027 |
'refresh') |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2028 |
except processutils.ProcessExecutionError as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2029 |
reason = ex.stderr |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2030 |
LOG.exception(_("Unable to refresh zone VNC console SMF service " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2031 |
"'%s': %s") % (console_fmri, reason)) |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2032 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2033 |
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
|
2034 |
"""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
|
2035 |
name = instance['name'] |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2036 |
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
|
2037 |
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
|
2038 |
"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
|
2039 |
% name) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2040 |
return None |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2041 |
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
|
2042 |
# 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
|
2043 |
try: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2044 |
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
|
2045 |
console_fmri) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2046 |
return state.strip() |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2047 |
except processutils.ProcessExecutionError as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2048 |
reason = ex.stderr |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2049 |
LOG.exception(_("Console state request failed for zone VNC " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2050 |
"console SMF service for instance '%s': %s") |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2051 |
% (name, reason)) |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2052 |
raise |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2053 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2054 |
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
|
2055 |
"""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
|
2056 |
name = instance['name'] |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2057 |
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
|
2058 |
# 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
|
2059 |
try: |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2060 |
utils.execute('/usr/bin/svcs', '-H', '-o', 'state', console_fmri) |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2061 |
return True |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2062 |
except Exception: |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2063 |
return False |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2064 |
|
5191
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2065 |
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
|
2066 |
"""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
|
2067 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2068 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2069 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2070 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2071 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2072 |
# log the zone's configuration |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2073 |
with ZoneConfig(zone) as zc: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2074 |
LOG.debug("-" * 80) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2075 |
LOG.debug(zc.zone.exportConfig(True)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2076 |
LOG.debug("-" * 80) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2077 |
|
4832
eef9ea54fabe
21761279 Driver erroneously includes trailing space in zone.install() arguments
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4781
diff
changeset
|
2078 |
options = ['-a', image] |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2079 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2080 |
if os.listdir(sc_dir): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2081 |
# 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
|
2082 |
options.extend(['-c', sc_dir]) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2083 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2084 |
try: |
5193
3120ba36a435
22195615 sysconfig temporary directory not always cleaned up
david.comay@oracle.com
parents:
5192
diff
changeset
|
2085 |
LOG.debug(_("Installing instance '%s' (%s)") % |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2086 |
(name, instance['display_name'])) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2087 |
zone.install(options=options) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2088 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2089 |
reason = zonemgr_strerror(ex) |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2090 |
LOG.exception(_("Unable to install root file system for instance " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2091 |
"'%s' via zonemgr(3RAD): %s") % (name, reason)) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2092 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2093 |
|
6260
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
2094 |
self._set_instance_metahostid(instance) |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
2095 |
|
5193
3120ba36a435
22195615 sysconfig temporary directory not always cleaned up
david.comay@oracle.com
parents:
5192
diff
changeset
|
2096 |
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
|
2097 |
(name, instance['display_name'])) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2098 |
|
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
2099 |
def _power_on(self, instance, network_info): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2100 |
"""Power on a Solaris Zone.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2101 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2102 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2103 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2104 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2105 |
|
6260
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
2106 |
# Attempt to update the zones hostid in the instance data, to catch |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
2107 |
# those instances that might have been created without a hostid stored. |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
2108 |
self._set_instance_metahostid(instance) |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
2109 |
|
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2110 |
bootargs = [] |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2111 |
if CONF.solariszones.solariszones_boot_options: |
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2112 |
reset_bootargs = False |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2113 |
persistent = 'False' |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2114 |
|
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2115 |
# Get any bootargs already set in the zone |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2116 |
cur_bootargs = lookup_resource_property(zone, 'global', 'bootargs') |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2117 |
|
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2118 |
# Get any bootargs set in the instance metadata by the user |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2119 |
meta_bootargs = instance.metadata.get('bootargs') |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2120 |
|
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2121 |
if meta_bootargs: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2122 |
bootargs = ['--', str(meta_bootargs)] |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2123 |
persistent = str( |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2124 |
instance.metadata.get('bootargs_persist', 'False')) |
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2125 |
if cur_bootargs is not None and meta_bootargs != cur_bootargs: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2126 |
with ZoneConfig(zone) as zc: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2127 |
reset_bootargs = True |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2128 |
# Temporarily clear bootargs in zone config |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2129 |
zc.clear_resource_props('global', ['bootargs']) |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2130 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2131 |
try: |
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2132 |
zone.boot(bootargs) |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
2133 |
self._plug_vifs(instance, network_info) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2134 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2135 |
reason = zonemgr_strerror(ex) |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2136 |
LOG.exception(_("Unable to power on instance '%s' via " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2137 |
"zonemgr(3RAD): %s") % (name, reason)) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2138 |
raise exception.InstancePowerOnFailure(reason=reason) |
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2139 |
finally: |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2140 |
if CONF.solariszones.solariszones_boot_options: |
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2141 |
if meta_bootargs and persistent.lower() == 'false': |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2142 |
# We have consumed the metadata bootargs and |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2143 |
# the user asked for them not to be persistent so |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2144 |
# clear them out now. |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2145 |
instance.metadata.pop('bootargs', None) |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2146 |
instance.metadata.pop('bootargs_persist', None) |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2147 |
|
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2148 |
if reset_bootargs: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2149 |
with ZoneConfig(zone) as zc: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2150 |
# restore original boot args in zone config |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2151 |
zc.setprop('global', 'bootargs', cur_bootargs) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2152 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2153 |
def _uninstall(self, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2154 |
"""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
|
2155 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2156 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2157 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2158 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2159 |
|
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2160 |
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
|
2161 |
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
|
2162 |
% (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
|
2163 |
return |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2164 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2165 |
zone.uninstall(['-F']) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2166 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2167 |
reason = zonemgr_strerror(ex) |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2168 |
LOG.exception(_("Unable to uninstall root file system for " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2169 |
"instance '%s' via zonemgr(3RAD): %s") |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2170 |
% (name, reason)) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2171 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2172 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2173 |
def _delete_config(self, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2174 |
"""Delete an existing Solaris Zone configuration.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2175 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2176 |
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
|
2177 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2178 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2179 |
try: |
5610
3fd0658e8699
22827759 nova-compute still trips over itself when rad:local restarts
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5609
diff
changeset
|
2180 |
self.zone_manager.delete(name) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2181 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2182 |
reason = zonemgr_strerror(ex) |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2183 |
LOG.exception(_("Unable to delete configuration for instance '%s' " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2184 |
"via zonemgr(3RAD): %s") % (name, reason)) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2185 |
raise |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2186 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2187 |
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
|
2188 |
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
|
2189 |
"""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
|
2190 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2191 |
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
|
2192 |
running (power_state.RUNNING). |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2193 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2194 |
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
|
2195 |
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
|
2196 |
that it was before this call began. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2197 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2198 |
:param context: security context |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2199 |
:param instance: nova.objects.instance.Instance |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2200 |
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
|
2201 |
the creation of the new instance. |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2202 |
:param nova.objects.ImageMeta image_meta: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2203 |
The metadata of the image of the instance. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2204 |
: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
|
2205 |
: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
|
2206 |
:param network_info: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2207 |
: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
|
2208 |
: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
|
2209 |
attached to the instance. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2210 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2211 |
image = self._fetch_image(context, instance) |
5607
cce26674fa5b
18733958 nova tried to create x86 instance on SPARC
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5606
diff
changeset
|
2212 |
self._validate_image(context, image, instance) |
7265
078a4fa1d5a1
24933105 Flavor RAM not aligned to 256Mb causes error in nova.virt.solariszones.driver
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7264
diff
changeset
|
2213 |
self._validate_flavor(instance) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2214 |
|
6900
7563855115a6
21678952 Multi-Volume attachment during instance creation does not work
David Hollister <david.hollister@oracle.com>
parents:
6854
diff
changeset
|
2215 |
# c1d0 is the standard dev for the default boot device. |
7563855115a6
21678952 Multi-Volume attachment during instance creation does not work
David Hollister <david.hollister@oracle.com>
parents:
6854
diff
changeset
|
2216 |
# Irrelevant value for ZFS, but Cinder gets stroppy without it. |
7563855115a6
21678952 Multi-Volume attachment during instance creation does not work
David Hollister <david.hollister@oracle.com>
parents:
6854
diff
changeset
|
2217 |
mountpoint = "c1d0" |
7563855115a6
21678952 Multi-Volume attachment during instance creation does not work
David Hollister <david.hollister@oracle.com>
parents:
6854
diff
changeset
|
2218 |
|
7563855115a6
21678952 Multi-Volume attachment during instance creation does not work
David Hollister <david.hollister@oracle.com>
parents:
6854
diff
changeset
|
2219 |
# Ensure no block device mappings attempt to use the reserved boot |
7563855115a6
21678952 Multi-Volume attachment during instance creation does not work
David Hollister <david.hollister@oracle.com>
parents:
6854
diff
changeset
|
2220 |
# device (c1d0). |
7563855115a6
21678952 Multi-Volume attachment during instance creation does not work
David Hollister <david.hollister@oracle.com>
parents:
6854
diff
changeset
|
2221 |
for entry in block_device_info.get('block_device_mapping'): |
7563855115a6
21678952 Multi-Volume attachment during instance creation does not work
David Hollister <david.hollister@oracle.com>
parents:
6854
diff
changeset
|
2222 |
if entry['connection_info'] is None: |
7563855115a6
21678952 Multi-Volume attachment during instance creation does not work
David Hollister <david.hollister@oracle.com>
parents:
6854
diff
changeset
|
2223 |
continue |
7563855115a6
21678952 Multi-Volume attachment during instance creation does not work
David Hollister <david.hollister@oracle.com>
parents:
6854
diff
changeset
|
2224 |
|
7563855115a6
21678952 Multi-Volume attachment during instance creation does not work
David Hollister <david.hollister@oracle.com>
parents:
6854
diff
changeset
|
2225 |
mount_device = entry['mount_device'] |
7563855115a6
21678952 Multi-Volume attachment during instance creation does not work
David Hollister <david.hollister@oracle.com>
parents:
6854
diff
changeset
|
2226 |
if mount_device == '/dev/' + mountpoint: |
7563855115a6
21678952 Multi-Volume attachment during instance creation does not work
David Hollister <david.hollister@oracle.com>
parents:
6854
diff
changeset
|
2227 |
msg = (_("Unable to assign '%s' to block device as it is" |
7563855115a6
21678952 Multi-Volume attachment during instance creation does not work
David Hollister <david.hollister@oracle.com>
parents:
6854
diff
changeset
|
2228 |
"reserved for the root file system") % mount_device) |
7563855115a6
21678952 Multi-Volume attachment during instance creation does not work
David Hollister <david.hollister@oracle.com>
parents:
6854
diff
changeset
|
2229 |
raise exception.InvalidDiskInfo(msg) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2230 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2231 |
# 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
|
2232 |
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
|
2233 |
volume_id = volume['id'] |
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
2234 |
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
|
2235 |
try: |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2236 |
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
|
2237 |
context, instance) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2238 |
except exception.InvalidVolume as reason: |
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2239 |
# 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
|
2240 |
# 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
|
2241 |
# 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
|
2242 |
LOG.warning(_("Volume '%s' is being discarded: %s") |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2243 |
% (volume_id, reason)) |
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2244 |
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
|
2245 |
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
|
2246 |
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
|
2247 |
# Something really bad happened. Don't pass Go. |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2248 |
LOG.exception(_("Unable to attach root zpool volume '%s' to " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2249 |
"instance %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
|
2250 |
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
|
2251 |
raise |
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2252 |
|
6900
7563855115a6
21678952 Multi-Volume attachment during instance creation does not work
David Hollister <david.hollister@oracle.com>
parents:
6854
diff
changeset
|
2253 |
# create a new directory for SC profiles |
7563855115a6
21678952 Multi-Volume attachment during instance creation does not work
David Hollister <david.hollister@oracle.com>
parents:
6854
diff
changeset
|
2254 |
sc_dir = tempfile.mkdtemp(prefix="nova-sysconfig-", |
7563855115a6
21678952 Multi-Volume attachment during instance creation does not work
David Hollister <david.hollister@oracle.com>
parents:
6854
diff
changeset
|
2255 |
dir=CONF.state_path) |
7563855115a6
21678952 Multi-Volume attachment during instance creation does not work
David Hollister <david.hollister@oracle.com>
parents:
6854
diff
changeset
|
2256 |
os.chmod(sc_dir, 0755) |
7563855115a6
21678952 Multi-Volume attachment during instance creation does not work
David Hollister <david.hollister@oracle.com>
parents:
6854
diff
changeset
|
2257 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2258 |
try: |
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
2259 |
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
|
2260 |
connection_info, sc_dir, admin_password) |
5191
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2261 |
self._install(instance, image, sc_dir) |
6900
7563855115a6
21678952 Multi-Volume attachment during instance creation does not work
David Hollister <david.hollister@oracle.com>
parents:
6854
diff
changeset
|
2262 |
|
7563855115a6
21678952 Multi-Volume attachment during instance creation does not work
David Hollister <david.hollister@oracle.com>
parents:
6854
diff
changeset
|
2263 |
for entry in block_device_info.get('block_device_mapping'): |
7563855115a6
21678952 Multi-Volume attachment during instance creation does not work
David Hollister <david.hollister@oracle.com>
parents:
6854
diff
changeset
|
2264 |
if entry['connection_info'] is not None: |
7563855115a6
21678952 Multi-Volume attachment during instance creation does not work
David Hollister <david.hollister@oracle.com>
parents:
6854
diff
changeset
|
2265 |
self.attach_volume(context, entry['connection_info'], |
7563855115a6
21678952 Multi-Volume attachment during instance creation does not work
David Hollister <david.hollister@oracle.com>
parents:
6854
diff
changeset
|
2266 |
instance, entry['mount_device']) |
7563855115a6
21678952 Multi-Volume attachment during instance creation does not work
David Hollister <david.hollister@oracle.com>
parents:
6854
diff
changeset
|
2267 |
|
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
2268 |
self._power_on(instance, network_info) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2269 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2270 |
reason = zonemgr_strerror(ex) |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2271 |
LOG.exception(_("Unable to spawn instance '%s' via zonemgr(3RAD): " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2272 |
"'%s'") % (name, reason)) |
5641
a48a4735fa25
22854356 Failed non-global zone launches leaving instance zpool suspended
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5640
diff
changeset
|
2273 |
# At least attempt to uninstall the instance, depending on where |
a48a4735fa25
22854356 Failed non-global zone launches leaving instance zpool suspended
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5640
diff
changeset
|
2274 |
# the installation got to there could be things left behind that |
a48a4735fa25
22854356 Failed non-global zone launches leaving instance zpool suspended
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5640
diff
changeset
|
2275 |
# need to be cleaned up, e.g a root zpool etc. |
a48a4735fa25
22854356 Failed non-global zone launches leaving instance zpool suspended
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5640
diff
changeset
|
2276 |
try: |
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
2277 |
self._uninstall(instance) |
5641
a48a4735fa25
22854356 Failed non-global zone launches leaving instance zpool suspended
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5640
diff
changeset
|
2278 |
except Exception as ex: |
5847
230bb7c2a9fb
23169819 traceback when failing to uninstall zone
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5641
diff
changeset
|
2279 |
reason = zonemgr_strerror(ex) |
5641
a48a4735fa25
22854356 Failed non-global zone launches leaving instance zpool suspended
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5640
diff
changeset
|
2280 |
LOG.debug(_("Unable to uninstall instance '%s' via " |
a48a4735fa25
22854356 Failed non-global zone launches leaving instance zpool suspended
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5640
diff
changeset
|
2281 |
"zonemgr(3RAD): %s") % (name, reason)) |
a48a4735fa25
22854356 Failed non-global zone launches leaving instance zpool suspended
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5640
diff
changeset
|
2282 |
try: |
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
2283 |
self._delete_config(instance) |
5641
a48a4735fa25
22854356 Failed non-global zone launches leaving instance zpool suspended
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5640
diff
changeset
|
2284 |
except Exception as ex: |
5847
230bb7c2a9fb
23169819 traceback when failing to uninstall zone
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5641
diff
changeset
|
2285 |
reason = zonemgr_strerror(ex) |
5641
a48a4735fa25
22854356 Failed non-global zone launches leaving instance zpool suspended
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5640
diff
changeset
|
2286 |
LOG.debug(_("Unable to unconfigure instance '%s' via " |
a48a4735fa25
22854356 Failed non-global zone launches leaving instance zpool suspended
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5640
diff
changeset
|
2287 |
"zonemgr(3RAD): %s") % (name, reason)) |
a48a4735fa25
22854356 Failed non-global zone launches leaving instance zpool suspended
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5640
diff
changeset
|
2288 |
|
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
2289 |
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
|
2290 |
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
|
2291 |
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
|
2292 |
raise |
5193
3120ba36a435
22195615 sysconfig temporary directory not always cleaned up
david.comay@oracle.com
parents:
5192
diff
changeset
|
2293 |
finally: |
3120ba36a435
22195615 sysconfig temporary directory not always cleaned up
david.comay@oracle.com
parents:
5192
diff
changeset
|
2294 |
# remove the sc_profile temp directory |
3120ba36a435
22195615 sysconfig temporary directory not always cleaned up
david.comay@oracle.com
parents:
5192
diff
changeset
|
2295 |
shutil.rmtree(sc_dir) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2296 |
|
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
2297 |
if connection_info is not None: |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2298 |
bdm_obj = objects.BlockDeviceMappingList() |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2299 |
# there's only one bdm for this instance at this point |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2300 |
bdm = bdm_obj.get_by_instance_uuid( |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2301 |
context, instance.uuid).objects[0] |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2302 |
|
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2303 |
# update the required attributes |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2304 |
bdm['connection_info'] = jsonutils.dumps(connection_info) |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2305 |
bdm['source_type'] = 'volume' |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2306 |
bdm['destination_type'] = 'volume' |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2307 |
bdm['device_name'] = mountpoint |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2308 |
bdm['delete_on_termination'] = True |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2309 |
bdm['volume_id'] = volume_id |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2310 |
bdm['volume_size'] = instance['root_gb'] |
4585
86590f6eefcb
20052290 instance failed to launch with InvalidBDM: Block Device Mapping is Invalid
Niall Power <niall.power@oracle.com>
parents:
4553
diff
changeset
|
2311 |
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
|
2312 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2313 |
def _power_off(self, instance, halt_type): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2314 |
"""Power off a Solaris Zone.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2315 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2316 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2317 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2318 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2319 |
|
6260
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
2320 |
# Attempt to update the zones hostid in the instance data, to catch |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
2321 |
# those instances that might have been created without a hostid stored. |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
2322 |
self._set_instance_metahostid(instance) |
c6db55d32fc3
23593070 resize/evacuate should carry the hostid of the zone to the new system
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6178
diff
changeset
|
2323 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2324 |
try: |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
2325 |
self._unplug_vifs(instance) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2326 |
if halt_type == 'SOFT': |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2327 |
zone.shutdown() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2328 |
else: |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2329 |
# '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
|
2330 |
zone.halt() |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2331 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2332 |
reason = zonemgr_strerror(ex) |
7026
5d39d81ed166
24696610 iscsi volume deleted before zone
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6913
diff
changeset
|
2333 |
# A shutdown state could still be reached if the error was |
5d39d81ed166
24696610 iscsi volume deleted before zone
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6913
diff
changeset
|
2334 |
# informational and ignorable. |
5d39d81ed166
24696610 iscsi volume deleted before zone
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6913
diff
changeset
|
2335 |
if self._get_state(zone) == power_state.SHUTDOWN: |
5d39d81ed166
24696610 iscsi volume deleted before zone
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6913
diff
changeset
|
2336 |
LOG.warning(_("Ignoring command error returned while " |
5d39d81ed166
24696610 iscsi volume deleted before zone
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6913
diff
changeset
|
2337 |
"trying to power off instance '%s' via " |
5d39d81ed166
24696610 iscsi volume deleted before zone
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6913
diff
changeset
|
2338 |
"zonemgr(3RAD): %s" % (name, reason))) |
5d39d81ed166
24696610 iscsi volume deleted before zone
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6913
diff
changeset
|
2339 |
return |
5d39d81ed166
24696610 iscsi volume deleted before zone
Sean Wilcox <sean.wilcox@oracle.com>
parents:
6913
diff
changeset
|
2340 |
|
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2341 |
LOG.exception(_("Unable to power off instance '%s' " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2342 |
"via zonemgr(3RAD): %s") % (name, reason)) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2343 |
raise exception.InstancePowerOffFailure(reason=reason) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2344 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2345 |
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
|
2346 |
block_device_info): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2347 |
"""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
|
2348 |
""" |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2349 |
self.power_off(instance) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2350 |
|
7263
d601ec170433
18780229 filter scheduler provides no details with bad flavor definition
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7027
diff
changeset
|
2351 |
extra_specs = self._get_flavor(instance)['extra_specs'].copy() |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2352 |
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
|
2353 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2354 |
name = instance['name'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2355 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2356 |
self._set_num_cpu(name, instance.vcpus, brand) |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2357 |
self._set_memory_cap(name, instance.memory_mb, brand) |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2358 |
|
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
2359 |
rgb = instance.root_gb |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2360 |
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
|
2361 |
if old_rvid: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2362 |
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
|
2363 |
mount_dev = instance['root_device_name'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2364 |
del instance.system_metadata['old_instance_volid'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2365 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2366 |
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
|
2367 |
rgb, mount_dev) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2368 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2369 |
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
|
2370 |
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
|
2371 |
"""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
|
2372 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2373 |
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
|
2374 |
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
|
2375 |
warning in that case. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2376 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2377 |
:param context: security context |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2378 |
: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
|
2379 |
:param network_info: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2380 |
: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
|
2381 |
: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
|
2382 |
be detached from the instance. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2383 |
: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
|
2384 |
:param migrate_data: implementation specific params |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2385 |
""" |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2386 |
if (instance['task_state'] == task_states.RESIZE_REVERTING and |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2387 |
instance.system_metadata['old_vm_state'] == vm_states.RESIZED): |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2388 |
return |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2389 |
|
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
2390 |
# A destroy is issued for the original zone for an evac case. If |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
2391 |
# the evac fails we need to protect the zone from deletion when |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
2392 |
# power comes back on. |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
2393 |
evac_from = instance.system_metadata.get('evac_from') |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
2394 |
if evac_from is not None and instance['task_state'] is None: |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
2395 |
instance.host = evac_from |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
2396 |
instance.node = evac_from |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
2397 |
del instance.system_metadata['evac_from'] |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
2398 |
instance.save() |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
2399 |
|
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
2400 |
return |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
2401 |
|
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2402 |
try: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2403 |
# 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
|
2404 |
# 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
|
2405 |
# proceed. |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2406 |
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
|
2407 |
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
|
2408 |
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
|
2409 |
except Exception: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2410 |
pass |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2411 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2412 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2413 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2414 |
# If instance cannot be found, just return. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2415 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2416 |
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
|
2417 |
% name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2418 |
return |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2419 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2420 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2421 |
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
|
2422 |
self._power_off(instance, 'HARD') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2423 |
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
|
2424 |
self._uninstall(instance) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2425 |
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
|
2426 |
self._delete_config(instance) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2427 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2428 |
reason = zonemgr_strerror(ex) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2429 |
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
|
2430 |
"%s") % (name, reason)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2431 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2432 |
# 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
|
2433 |
# during a resize operation we want to make sure the cinder volumes are |
5252
947514442d05
22513201 nova resize revert will fail if there are volumes attached
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5196
diff
changeset
|
2434 |
# properly cleaned up. We need to do this here, because the periodic |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2435 |
# 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
|
2436 |
# 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
|
2437 |
# 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
|
2438 |
# 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
|
2439 |
# 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
|
2440 |
# 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
|
2441 |
# |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2442 |
# 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
|
2443 |
# 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
|
2444 |
# finish_revert_migration. |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2445 |
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
|
2446 |
return |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2447 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2448 |
tags = ['old_instance_volid', 'new_instance_volid'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2449 |
for tag in tags: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2450 |
volid = instance.system_metadata.get(tag) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2451 |
if volid: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2452 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2453 |
LOG.debug(_("Deleting volume %s"), volid) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2454 |
self._volume_api.delete(context, volid) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2455 |
del instance.system_metadata[tag] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2456 |
except Exception: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2457 |
pass |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
2458 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2459 |
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
|
2460 |
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
|
2461 |
"""Cleanup the instance resources . |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2462 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2463 |
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
|
2464 |
this method. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2465 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2466 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2467 |
: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
|
2468 |
:param network_info: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2469 |
: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
|
2470 |
: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
|
2471 |
be detached from the instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2472 |
: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
|
2473 |
: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
|
2474 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2475 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2476 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2477 |
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
|
2478 |
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
|
2479 |
"""Reboot the specified instance. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2480 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2481 |
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
|
2482 |
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
|
2483 |
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
|
2484 |
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
|
2485 |
is paused or halted/stopped. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2486 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2487 |
:param instance: nova.objects.instance.Instance |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2488 |
:param network_info: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2489 |
: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
|
2490 |
: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
|
2491 |
: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
|
2492 |
: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
|
2493 |
encountered |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2494 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2495 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2496 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2497 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2498 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2499 |
|
1990
c1c6cc703d7a
18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
1944
diff
changeset
|
2500 |
if self._get_state(zone) == power_state.SHUTDOWN: |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
2501 |
self._power_on(instance, network_info) |
1990
c1c6cc703d7a
18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
1944
diff
changeset
|
2502 |
return |
c1c6cc703d7a
18686478 kstat warning every minute in nova-compute log on SPARC
david.comay@oracle.com
parents:
1944
diff
changeset
|
2503 |
|
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2504 |
bootargs = [] |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2505 |
if CONF.solariszones.solariszones_boot_options: |
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2506 |
reset_bootargs = False |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2507 |
persistent = 'False' |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2508 |
|
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2509 |
# Get any bootargs already set in the zone |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2510 |
cur_bootargs = lookup_resource_property(zone, 'global', 'bootargs') |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2511 |
|
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2512 |
# Get any bootargs set in the instance metadata by the user |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2513 |
meta_bootargs = instance.metadata.get('bootargs') |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2514 |
|
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2515 |
if meta_bootargs: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2516 |
bootargs = ['--', str(meta_bootargs)] |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2517 |
persistent = str( |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2518 |
instance.metadata.get('bootargs_persist', 'False')) |
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2519 |
if cur_bootargs is not None and meta_bootargs != cur_bootargs: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2520 |
with ZoneConfig(zone) as zc: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2521 |
reset_bootargs = True |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2522 |
# Temporarily clear bootargs in zone config |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2523 |
zc.clear_resource_props('global', ['bootargs']) |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2524 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2525 |
try: |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
2526 |
self._unplug_vifs(instance) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2527 |
if reboot_type == 'SOFT': |
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2528 |
bootargs.insert(0, '-r') |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2529 |
zone.shutdown(bootargs) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2530 |
else: |
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2531 |
zone.reboot(bootargs) |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
2532 |
self._plug_vifs(instance, network_info) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2533 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2534 |
reason = zonemgr_strerror(ex) |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2535 |
LOG.exception(_("Unable to reboot instance '%s' via " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2536 |
"zonemgr(3RAD): %s") % (name, reason)) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2537 |
raise exception.InstanceRebootFailure(reason=reason) |
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2538 |
finally: |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2539 |
if CONF.solariszones.solariszones_boot_options: |
5640
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2540 |
if meta_bootargs and persistent.lower() == 'false': |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2541 |
# We have consumed the metadata bootargs and |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2542 |
# the user asked for them not to be persistent so |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2543 |
# clear them out now. |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2544 |
instance.metadata.pop('bootargs', None) |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2545 |
instance.metadata.pop('bootargs_persist', None) |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2546 |
|
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2547 |
if reset_bootargs: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2548 |
with ZoneConfig(zone) as zc: |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2549 |
# restore original boot args in zone config |
47302747b363
PSARC/2016/031 OpenStack Nova support for boot options for guests
Brian Reitz <Brian.Reitz@Oracle.COM>
parents:
5610
diff
changeset
|
2550 |
zc.setprop('global', 'bootargs', cur_bootargs) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2551 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2552 |
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
|
2553 |
# 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
|
2554 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2555 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2556 |
def _get_console_output(self, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2557 |
"""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
|
2558 |
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
|
2559 |
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
|
2560 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2561 |
console_str = "" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2562 |
avail = MAX_CONSOLE_BYTES |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2563 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2564 |
# 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
|
2565 |
# 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
|
2566 |
# 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
|
2567 |
# 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
|
2568 |
# 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
|
2569 |
# 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
|
2570 |
# 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
|
2571 |
# 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
|
2572 |
# 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
|
2573 |
# 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
|
2574 |
# far and the result returned. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2575 |
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
|
2576 |
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
|
2577 |
reverse=True) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2578 |
for file in logfiles: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2579 |
size = os.path.getsize(file) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2580 |
if size == 0: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2581 |
continue |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2582 |
avail -= size |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2583 |
with open(file, 'r') as log: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2584 |
if avail < 0: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2585 |
(fragment, _) = utils.last_bytes(log, avail + size) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2586 |
remainder = fragment.find('\n') + 1 |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2587 |
console_str = fragment[remainder:] + console_str |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2588 |
break |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2589 |
fragment = '' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2590 |
for line in log.readlines(): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2591 |
fragment += line |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2592 |
console_str = fragment + console_str |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2593 |
return console_str |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2594 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2595 |
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
|
2596 |
"""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
|
2597 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2598 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2599 |
: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
|
2600 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2601 |
return self._get_console_output(instance) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2602 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2603 |
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
|
2604 |
"""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
|
2605 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2606 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2607 |
: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
|
2608 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2609 |
: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
|
2610 |
""" |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2611 |
# 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
|
2612 |
# 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
|
2613 |
# 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
|
2614 |
name = instance['name'] |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2615 |
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
|
2616 |
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
|
2617 |
"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
|
2618 |
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
|
2619 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2620 |
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
|
2621 |
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
|
2622 |
"instance '%s'") % name) |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2623 |
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
|
2624 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2625 |
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
|
2626 |
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
|
2627 |
|
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2628 |
# 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
|
2629 |
# 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
|
2630 |
# 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
|
2631 |
# 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
|
2632 |
try: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2633 |
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
|
2634 |
'refresh') |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2635 |
except processutils.ProcessExecutionError as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2636 |
reason = ex.stderr |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2637 |
LOG.exception(_("Unable to refresh zone VNC console SMF service " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2638 |
"'%s': %s" % (console_fmri, reason))) |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2639 |
raise |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2640 |
|
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2641 |
host = CONF.vnc.vncserver_proxyclient_address |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2642 |
try: |
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
2643 |
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
|
2644 |
console_fmri) |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2645 |
port = int(out.strip()) |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2646 |
return ctype.ConsoleVNC(host=host, port=port, |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2647 |
internal_access_path=None) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2648 |
except processutils.ProcessExecutionError as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
2649 |
reason = ex.stderr |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2650 |
LOG.exception(_("Unable to read VNC console port from zone VNC " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2651 |
"console SMF service '%s': %s" |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2652 |
% (console_fmri, reason))) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2653 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2654 |
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
|
2655 |
"""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
|
2656 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2657 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2658 |
: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
|
2659 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2660 |
: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
|
2661 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2662 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2663 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2664 |
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
|
2665 |
"""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
|
2666 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2667 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2668 |
: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
|
2669 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2670 |
: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
|
2671 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2672 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2673 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2674 |
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
|
2675 |
"""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
|
2676 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2677 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2678 |
: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
|
2679 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2680 |
: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
|
2681 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2682 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2683 |
|
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2684 |
def get_mks_console(self, context, instance): |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2685 |
"""Get connection info for a MKS console. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2686 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2687 |
:param context: security context |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2688 |
:param instance: nova.objects.instance.Instance |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2689 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2690 |
:returns an instance of console.type.ConsoleMKS |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2691 |
""" |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2692 |
raise NotImplementedError() |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2693 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2694 |
def _get_zone_diagnostics(self, zone): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2695 |
"""Return data about Solaris Zone diagnostics.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2696 |
if zone.id == -1: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2697 |
return None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2698 |
|
7266
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2699 |
diagnostics = defaultdict(lambda: 0) |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2700 |
|
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2701 |
for stat in ['lockedmem', 'nprocs', 'swapresv']: |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2702 |
uri = "kstat:/zone_caps/caps/%s_zone_%d/%d" % (stat, zone.id, |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2703 |
zone.id) |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2704 |
diagnostics[stat] = self._kstat_data(uri)['usage'] |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2705 |
|
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2706 |
# Get the inital accumulated data kstat, then get the sys_zone kstat |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2707 |
# and sum all the "*_cur" statistics in it. Then re-get the accumulated |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2708 |
# kstat, and if the generation number hasn't changed, add its values. |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2709 |
# If it has changed, try again a few times then give up because |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2710 |
# something keeps pulling cpus out from under us. |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2711 |
|
7475
6144ac72c2b3
25226057 nova boot will fail due to inability to get kstat values
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7266
diff
changeset
|
2712 |
uri = "kstat:/zones/%s/cpu" % zone.name |
6144ac72c2b3
25226057 nova boot will fail due to inability to get kstat values
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7266
diff
changeset
|
2713 |
accum_uri = "kstat:/zones/%s/cpu/accum/sys" % zone.name |
7266
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2714 |
|
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2715 |
for _attempt in range(3): |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2716 |
initial = self._kstat_data(accum_uri) |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2717 |
data = self._kstat_data(uri) |
7475
6144ac72c2b3
25226057 nova boot will fail due to inability to get kstat values
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7266
diff
changeset
|
2718 |
data.pop('accum') |
6144ac72c2b3
25226057 nova boot will fail due to inability to get kstat values
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7266
diff
changeset
|
2719 |
data.pop('pset_accum') |
6144ac72c2b3
25226057 nova boot will fail due to inability to get kstat values
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7266
diff
changeset
|
2720 |
|
6144ac72c2b3
25226057 nova boot will fail due to inability to get kstat values
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7266
diff
changeset
|
2721 |
# Turn the list of cpu ids in data.keys into a dictionary of the |
6144ac72c2b3
25226057 nova boot will fail due to inability to get kstat values
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7266
diff
changeset
|
2722 |
# 'sys' kstat for each cpu id. |
6144ac72c2b3
25226057 nova boot will fail due to inability to get kstat values
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7266
diff
changeset
|
2723 |
data = {n: self._kstat_data(uri + "/%s" % n)['sys'] |
6144ac72c2b3
25226057 nova boot will fail due to inability to get kstat values
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7266
diff
changeset
|
2724 |
for n in data.keys()} |
6144ac72c2b3
25226057 nova boot will fail due to inability to get kstat values
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7266
diff
changeset
|
2725 |
|
7266
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2726 |
# The list of cpu kstats in data must contain at least one element |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2727 |
# and all elements have the same map of statistics, since they're |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2728 |
# all the same kstat type. This gets a list of all the statistics |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2729 |
# which end in "_cur" from the first (guaranteed) kstat element. |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2730 |
stats = [k for k in data[data.keys()[0]].getMap().keys() if |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2731 |
k.endswith("_cur")] |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2732 |
|
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2733 |
for stat in stats: |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2734 |
diagnostics[stat[:-4]] += self._sum_kstat_statistic(data, stat) |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2735 |
|
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2736 |
final = self._kstat_data(accum_uri) |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2737 |
|
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2738 |
if initial['gen_num'] == final['gen_num']: |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2739 |
for stat in stats: |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2740 |
# Remove the '_cur' from the statistic |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2741 |
diagnostics[stat[:-4]] += initial[stat[:-4]] |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2742 |
break |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2743 |
else: |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2744 |
reason = (_("Could not get diagnostic info for instance '%s' " |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2745 |
"because the cpu list keeps changing.") % zone.name) |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2746 |
raise nova.exception.MaxRetriesExceeded(reason) |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2747 |
|
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2748 |
# Remove any None valued elements from diagnostics and return it |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
2749 |
return {k: v for k, v in diagnostics.items() if v is not None} |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2750 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2751 |
def get_diagnostics(self, instance): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2752 |
"""Return diagnostics data about the given instance. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2753 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2754 |
:param nova.objects.instance.Instance instance: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2755 |
The instance to which the diagnostic data should be returned. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2756 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2757 |
:return: Has a big overlap to the return value of the newer interface |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2758 |
:func:`get_instance_diagnostics` |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2759 |
:rtype: dict |
3998
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 |
# 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
|
2762 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2763 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2764 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2765 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2766 |
return self._get_zone_diagnostics(zone) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2767 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2768 |
def get_instance_diagnostics(self, instance): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2769 |
"""Return diagnostics data about the given instance. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2770 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2771 |
:param nova.objects.instance.Instance instance: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2772 |
The instance to which the diagnostic data should be returned. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2773 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2774 |
:return: Has a big overlap to the return value of the older interface |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2775 |
:func:`get_diagnostics` |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2776 |
:rtype: nova.virt.diagnostics.Diagnostics |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2777 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2778 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2779 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2780 |
def get_all_bw_counters(self, instances): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2781 |
"""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
|
2782 |
running VM. |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2783 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2784 |
: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
|
2785 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2786 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2787 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2788 |
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
|
2789 |
"""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
|
2790 |
a given host.- |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2791 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2792 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2793 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2794 |
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
|
2795 |
"""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
|
2796 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2797 |
# 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
|
2798 |
return CONF.my_ip |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2799 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2800 |
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
|
2801 |
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
|
2802 |
"""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
|
2803 |
# 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
|
2804 |
# 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
|
2805 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2806 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2807 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2808 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2809 |
|
7263
d601ec170433
18780229 filter scheduler provides no details with bad flavor definition
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7027
diff
changeset
|
2810 |
extra_specs = self._get_flavor(instance)['extra_specs'].copy() |
5191
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2811 |
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
|
2812 |
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
|
2813 |
# 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
|
2814 |
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
|
2815 |
% brand) |
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2816 |
raise NotImplementedError(reason) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2817 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2818 |
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
|
2819 |
|
5949
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2820 |
resource_scope = [zonemgr.Property("storage", suri)] |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2821 |
if connection_info.get('serial') is not None: |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2822 |
volume = self._volume_api.get(context, connection_info['serial']) |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2823 |
if volume['bootable']: |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2824 |
resource_scope.append(zonemgr.Property("bootpri", "1")) |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2825 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2826 |
with ZoneConfig(zone) as zc: |
5949
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2827 |
zc.addresource("device", resource_scope) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2828 |
|
4671
d08190e626f1
20867780 Nova should support LZR for block devices
Drew Fisher <drew.fisher@oracle.com>
parents:
4669
diff
changeset
|
2829 |
# 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
|
2830 |
if zone.state == ZONE_STATE_RUNNING: |
5606
005e55ad33d5
22220227 failure to apply zonecfg in attach_volume can leave debris in zonecfg
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5541
diff
changeset
|
2831 |
try: |
005e55ad33d5
22220227 failure to apply zonecfg in attach_volume can leave debris in zonecfg
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5541
diff
changeset
|
2832 |
zone.apply() |
005e55ad33d5
22220227 failure to apply zonecfg in attach_volume can leave debris in zonecfg
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5541
diff
changeset
|
2833 |
except Exception as ex: |
005e55ad33d5
22220227 failure to apply zonecfg in attach_volume can leave debris in zonecfg
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5541
diff
changeset
|
2834 |
reason = zonemgr_strerror(ex) |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2835 |
LOG.exception(_("Unable to attach '%s' to instance '%s' via " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2836 |
"zonemgr(3RAD): %s") % (suri, name, reason)) |
5606
005e55ad33d5
22220227 failure to apply zonecfg in attach_volume can leave debris in zonecfg
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5541
diff
changeset
|
2837 |
with ZoneConfig(zone) as zc: |
5949
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2838 |
zc.removeresources("device", resource_scope) |
5606
005e55ad33d5
22220227 failure to apply zonecfg in attach_volume can leave debris in zonecfg
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5541
diff
changeset
|
2839 |
raise |
4671
d08190e626f1
20867780 Nova should support LZR for block devices
Drew Fisher <drew.fisher@oracle.com>
parents:
4669
diff
changeset
|
2840 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2841 |
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
|
2842 |
encryption=None): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2843 |
"""Detach the disk attached to the instance.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2844 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2845 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2846 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2847 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2848 |
|
7263
d601ec170433
18780229 filter scheduler provides no details with bad flavor definition
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7027
diff
changeset
|
2849 |
extra_specs = self._get_flavor(instance)['extra_specs'].copy() |
5191
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2850 |
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
|
2851 |
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
|
2852 |
# 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
|
2853 |
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
|
2854 |
% brand) |
1a9d78bb53a1
20592407 Issue meaningful error message when attaching volume to non kernel zone
david.comay@oracle.com
parents:
5190
diff
changeset
|
2855 |
raise NotImplementedError(reason) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2856 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2857 |
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
|
2858 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2859 |
# Check if the specific property value exists before attempting removal |
5949
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2860 |
resource = lookup_resource_property_value(zone, "device", "storage", |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2861 |
suri) |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2862 |
if not resource: |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2863 |
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
|
2864 |
"'%s'") % (suri, name)) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2865 |
return |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2866 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2867 |
with ZoneConfig(zone) as zc: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2868 |
zc.removeresources("device", [zonemgr.Property("storage", suri)]) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2869 |
|
4671
d08190e626f1
20867780 Nova should support LZR for block devices
Drew Fisher <drew.fisher@oracle.com>
parents:
4669
diff
changeset
|
2870 |
# 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
|
2871 |
if zone.state == ZONE_STATE_RUNNING: |
5949
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2872 |
try: |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2873 |
zone.apply() |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2874 |
except: |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2875 |
LOG.exception(_("Unable to apply the detach of resource '%s' " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2876 |
"to running instance '%s' because the " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2877 |
"resource is most likely in use.") |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
2878 |
% (suri, name)) |
5949
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2879 |
|
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2880 |
# re-add the entry to the zone configuration so that the |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2881 |
# configuration will reflect what is in cinder before we raise |
6913
473a2401e764
24400482 VM fails to launch if network/iscsi/initiator is disabled
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6912
diff
changeset
|
2882 |
# the exception, therefore failing the detach and leaving the |
5949
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2883 |
# volume in-use. |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2884 |
needed_props = ["storage", "bootpri"] |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2885 |
props = filter(lambda prop: prop.name in needed_props, |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2886 |
resource.properties) |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2887 |
with ZoneConfig(zone) as zc: |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2888 |
zc.addresource("device", props) |
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2889 |
|
eefd43fe9fc4
23027174 nova should set the bootpri in the zonecfg on devices
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5948
diff
changeset
|
2890 |
raise |
4671
d08190e626f1
20867780 Nova should support LZR for block devices
Drew Fisher <drew.fisher@oracle.com>
parents:
4669
diff
changeset
|
2891 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2892 |
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
|
2893 |
instance, mountpoint, resize_to): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2894 |
"""Replace the volume attached to the given `instance`. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2895 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2896 |
:param dict old_connection_info: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2897 |
The volume for this connection gets detached from the given |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2898 |
`instance`. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2899 |
:param dict new_connection_info: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2900 |
The volume for this connection gets attached to the given |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2901 |
'instance'. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2902 |
:param nova.objects.instance.Instance instance: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2903 |
The instance whose volume gets replaced by another one. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2904 |
:param str mountpoint: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2905 |
The mountpoint in the instance where the volume for |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2906 |
`old_connection_info` is attached to. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2907 |
:param int resize_to: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2908 |
If the new volume is larger than the old volume, it gets resized |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2909 |
to the given size (in Gigabyte) of `resize_to`. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2910 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2911 |
:return: None |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2912 |
""" |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2913 |
raise NotImplementedError() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2914 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2915 |
def attach_interface(self, instance, image_meta, vif): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2916 |
"""Use hotplug to add a network interface to a running instance. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2917 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2918 |
The counter action to this is :func:`detach_interface`. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2919 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2920 |
:param nova.objects.instance.Instance instance: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2921 |
The instance which will get an additional network interface. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2922 |
:param nova.objects.ImageMeta image_meta: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2923 |
The metadata of the image of the instance. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2924 |
:param nova.network.model.NetworkInfo vif: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2925 |
The object which has the information about the interface to attach. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2926 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2927 |
:raise nova.exception.NovaException: If the attach fails. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2928 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2929 |
:return: None |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2930 |
""" |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2931 |
name = instance['name'] |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2932 |
zone = self._get_zone_by_name(name) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2933 |
if zone is None: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2934 |
raise exception.InstanceNotFound(instance_id=name) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2935 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2936 |
ctxt = nova_context.get_admin_context() |
7263
d601ec170433
18780229 filter scheduler provides no details with bad flavor definition
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7027
diff
changeset
|
2937 |
extra_specs = self._get_flavor(instance)['extra_specs'].copy() |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2938 |
brand = extra_specs.get('zonecfg:brand', ZONE_BRAND_SOLARIS) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2939 |
anetname = self._set_ovs_info(ctxt, zone, brand, False, vif) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2940 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2941 |
# apply the configuration if the vm is ACTIVE |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2942 |
if instance['vm_state'] == vm_states.ACTIVE: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2943 |
try: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2944 |
zone.apply() |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2945 |
except Exception as ex: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2946 |
reason = zonemgr_strerror(ex) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2947 |
msg = (_("Unable to attach interface to instance '%s' via " |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2948 |
"zonemgr(3RAD): %s") % (name, reason)) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2949 |
with ZoneConfig(zone) as zc: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2950 |
prop_filter = [zonemgr.Property('mac-address', |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2951 |
vif['address'])] |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2952 |
zc.removeresources('anet', prop_filter) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2953 |
raise nova.exception.NovaException(msg) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2954 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2955 |
# add port to ovs bridge |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2956 |
anet = ''.join([name, '/', anetname]) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2957 |
self._ovs_add_port(instance, vif, anet) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2958 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
2959 |
def detach_interface(self, instance, vif): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2960 |
"""Use hotunplug to remove a network interface from a running instance. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2961 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2962 |
The counter action to this is :func:`attach_interface`. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2963 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2964 |
:param nova.objects.instance.Instance instance: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2965 |
The instance which gets a network interface removed. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2966 |
:param nova.network.model.NetworkInfo vif: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2967 |
The object which has the information about the interface to detach. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2968 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2969 |
:raise nova.exception.NovaException: If the detach fails. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2970 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2971 |
:return: None |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
2972 |
""" |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2973 |
name = instance['name'] |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2974 |
zone = self._get_zone_by_name(name) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2975 |
if zone is None: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2976 |
raise exception.InstanceNotFound(instance_id=name) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2977 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2978 |
# Check if the specific property value exists before attempting removal |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2979 |
resource = lookup_resource_property_value(zone, 'anet', |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2980 |
'mac-address', |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2981 |
vif['address']) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2982 |
if not resource: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2983 |
msg = (_("Interface with MAC address '%s' is not attached to " |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2984 |
"instance '%s'.") % (vif['address'], name)) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2985 |
raise nova.exception.NovaException(msg) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2986 |
|
7263
d601ec170433
18780229 filter scheduler provides no details with bad flavor definition
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7027
diff
changeset
|
2987 |
extra_specs = self._get_flavor(instance)['extra_specs'].copy() |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2988 |
brand = extra_specs.get('zonecfg:brand', ZONE_BRAND_SOLARIS) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2989 |
for prop in resource.properties: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2990 |
if brand == ZONE_BRAND_SOLARIS and prop.name == 'linkname': |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2991 |
anetname = prop.value |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2992 |
break |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2993 |
elif brand != ZONE_BRAND_SOLARIS and prop.name == 'id': |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2994 |
anetname = 'net%s' % prop.value |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2995 |
break |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2996 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2997 |
with ZoneConfig(zone) as zc: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2998 |
zc.removeresources('anet', [zonemgr.Property('mac-address', |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
2999 |
vif['address'])]) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3000 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3001 |
# apply the configuration if the vm is ACTIVE |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3002 |
if instance['vm_state'] == vm_states.ACTIVE: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3003 |
try: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3004 |
zone.apply() |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3005 |
except: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3006 |
msg = (_("Unable to detach interface '%s' from running " |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3007 |
"instance '%s' because the resource is most likely " |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3008 |
"in use.") % (anetname, name)) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3009 |
needed_props = ["lower-link", "configure-allowed-address", |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3010 |
"mac-address", "mtu"] |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3011 |
if brand == ZONE_BRAND_SOLARIS: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3012 |
needed_props.append("linkname") |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3013 |
else: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3014 |
needed_props.append("id") |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3015 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3016 |
props = filter(lambda prop: prop.name in needed_props, |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3017 |
resource.properties) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3018 |
with ZoneConfig(zone) as zc: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3019 |
zc.addresource('anet', props) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3020 |
raise nova.exception.NovaException(msg) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3021 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3022 |
# remove anet from OVS bridge |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3023 |
port = ''.join([name, '/', anetname]) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3024 |
self._ovs_delete_port(port) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3025 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3026 |
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
|
3027 |
"""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
|
3028 |
hold the new root disk |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3029 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3030 |
: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
|
3031 |
: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
|
3032 |
: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
|
3033 |
""" |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3034 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3035 |
self._volume_api.delete(context, volume['id']) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3036 |
except Exception as err: |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
3037 |
LOG.exception(_("Unable to cleanup the resized volume: %s" % err)) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3038 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3039 |
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
|
3040 |
flavor, network_info, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3041 |
block_device_info=None, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3042 |
timeout=0, retry_interval=0): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3043 |
"""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
|
3044 |
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
|
3045 |
|
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3046 |
:param nova.objects.instance.Instance instance: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3047 |
The instance whose disk should be migrated. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3048 |
:param str dest: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3049 |
The IP address of the destination host. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3050 |
:param nova.objects.flavor.Flavor flavor: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3051 |
The flavor of the instance whose disk get migrated. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3052 |
:param nova.network.model.NetworkInfo network_info: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3053 |
The network information of the given `instance`. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3054 |
:param dict block_device_info: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3055 |
Information about the block devices. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3056 |
:param int timeout: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3057 |
The time in seconds to wait for the guest OS to shutdown. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3058 |
:param int retry_interval: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3059 |
How often to signal guest while waiting for it to shutdown. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3060 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3061 |
:return: A list of disk information dicts in JSON format. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3062 |
:rtype: str |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3063 |
""" |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3064 |
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
|
3065 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3066 |
samehost = (dest == self.get_host_ip_addr()) |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3067 |
if samehost: |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3068 |
instance.system_metadata['resize_samehost'] = samehost |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3069 |
|
7263
d601ec170433
18780229 filter scheduler provides no details with bad flavor definition
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7027
diff
changeset
|
3070 |
extra_specs = self._get_flavor(instance)['extra_specs'].copy() |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3071 |
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
|
3072 |
if brand != ZONE_BRAND_SOLARIS_KZ and not samehost: |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
3073 |
reason = (_("'%s' branded zones do not currently support resize " |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
3074 |
"to a different host.") % brand) |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
3075 |
raise exception.MigrationPreCheckError(reason=reason) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3076 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3077 |
if brand != flavor['extra_specs'].get('zonecfg:brand'): |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
3078 |
reason = (_("Unable to change brand of zone during resize.")) |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
3079 |
raise exception.MigrationPreCheckError(reason=reason) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3080 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3081 |
orgb = instance['root_gb'] |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3082 |
nrgb = flavor.root_gb |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3083 |
if orgb > nrgb: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3084 |
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
|
3085 |
raise exception.ResizeError(reason=msg) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3086 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3087 |
self.power_off(instance, timeout, retry_interval) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3088 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3089 |
disk_info = None |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3090 |
if nrgb > orgb or not samehost: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3091 |
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
|
3092 |
rootmp = instance.root_device_name |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3093 |
for entry in bmap: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3094 |
mountdev = entry['mount_device'].rpartition('/')[2] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3095 |
if mountdev == rootmp: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3096 |
root_ci = entry['connection_info'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3097 |
break |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3098 |
else: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3099 |
# 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
|
3100 |
# 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
|
3101 |
# 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
|
3102 |
if samehost and brand == ZONE_BRAND_SOLARIS: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3103 |
return disk_info |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3104 |
else: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3105 |
msg = (_("Cannot find an attached root device.")) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3106 |
raise exception.ResizeError(reason=msg) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3107 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3108 |
if root_ci['driver_volume_type'] == 'iscsi': |
7583
612b249c2397
25202866 Nova resize fails with Pure storage iSCSI back-end
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7475
diff
changeset
|
3109 |
try: |
612b249c2397
25202866 Nova resize fails with Pure storage iSCSI back-end
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7475
diff
changeset
|
3110 |
volume_id = root_ci['data']['volume_id'] |
612b249c2397
25202866 Nova resize fails with Pure storage iSCSI back-end
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7475
diff
changeset
|
3111 |
except KeyError: |
612b249c2397
25202866 Nova resize fails with Pure storage iSCSI back-end
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7475
diff
changeset
|
3112 |
volume_id = root_ci.get('serial') |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3113 |
else: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3114 |
volume_id = root_ci['serial'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3115 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3116 |
if volume_id is None: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3117 |
msg = (_("Cannot find an attached root device.")) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3118 |
raise exception.ResizeError(reason=msg) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3119 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3120 |
vinfo = self._volume_api.get(context, volume_id) |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3121 |
newvolume = self._volume_api.create( |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3122 |
context, orgb, vinfo['display_name'] + '-resized', |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3123 |
vinfo['display_description'], source_volume=vinfo) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3124 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3125 |
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
|
3126 |
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
|
3127 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3128 |
# 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
|
3129 |
# 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
|
3130 |
while True: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3131 |
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
|
3132 |
if volume['status'] != 'creating': |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3133 |
break |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3134 |
greenthread.sleep(1) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3135 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3136 |
if nrgb > orgb: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3137 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3138 |
self._volume_api.extend(context, newvolume['id'], nrgb) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3139 |
except Exception: |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
3140 |
LOG.exception(_("Failed to extend the new volume")) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3141 |
self._cleanup_migrate_disk(context, instance, newvolume) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3142 |
raise |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3143 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3144 |
disk_info = newvolume |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3145 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3146 |
return disk_info |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3147 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3148 |
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
|
3149 |
"""Snapshots the specified instance. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3150 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3151 |
:param context: security context |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3152 |
:param instance: nova.objects.instance.Instance |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3153 |
: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
|
3154 |
hold the snapshot. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3155 |
""" |
6912
d4b1a12dae66
24673856 snapshot fails when instance is stopped
Drew Fisher <drew.fisher@oracle.com>
parents:
6901
diff
changeset
|
3156 |
name = instance['name'] |
d4b1a12dae66
24673856 snapshot fails when instance is stopped
Drew Fisher <drew.fisher@oracle.com>
parents:
6901
diff
changeset
|
3157 |
zone = self._get_zone_by_name(name) |
d4b1a12dae66
24673856 snapshot fails when instance is stopped
Drew Fisher <drew.fisher@oracle.com>
parents:
6901
diff
changeset
|
3158 |
if zone is None: |
d4b1a12dae66
24673856 snapshot fails when instance is stopped
Drew Fisher <drew.fisher@oracle.com>
parents:
6901
diff
changeset
|
3159 |
raise exception.InstanceNotFound(instance_id=name) |
d4b1a12dae66
24673856 snapshot fails when instance is stopped
Drew Fisher <drew.fisher@oracle.com>
parents:
6901
diff
changeset
|
3160 |
|
d4b1a12dae66
24673856 snapshot fails when instance is stopped
Drew Fisher <drew.fisher@oracle.com>
parents:
6901
diff
changeset
|
3161 |
# look to see if the zone is a kernel zone and is powered off. If it |
d4b1a12dae66
24673856 snapshot fails when instance is stopped
Drew Fisher <drew.fisher@oracle.com>
parents:
6901
diff
changeset
|
3162 |
# is raise an exception before trying to archive it |
7263
d601ec170433
18780229 filter scheduler provides no details with bad flavor definition
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7027
diff
changeset
|
3163 |
extra_specs = self._get_flavor(instance)['extra_specs'].copy() |
6912
d4b1a12dae66
24673856 snapshot fails when instance is stopped
Drew Fisher <drew.fisher@oracle.com>
parents:
6901
diff
changeset
|
3164 |
brand = extra_specs.get('zonecfg:brand', ZONE_BRAND_SOLARIS) |
d4b1a12dae66
24673856 snapshot fails when instance is stopped
Drew Fisher <drew.fisher@oracle.com>
parents:
6901
diff
changeset
|
3165 |
if zone.state != ZONE_STATE_RUNNING and \ |
d4b1a12dae66
24673856 snapshot fails when instance is stopped
Drew Fisher <drew.fisher@oracle.com>
parents:
6901
diff
changeset
|
3166 |
brand == ZONE_BRAND_SOLARIS_KZ: |
d4b1a12dae66
24673856 snapshot fails when instance is stopped
Drew Fisher <drew.fisher@oracle.com>
parents:
6901
diff
changeset
|
3167 |
raise exception.InstanceNotRunning(instance_id=name) |
d4b1a12dae66
24673856 snapshot fails when instance is stopped
Drew Fisher <drew.fisher@oracle.com>
parents:
6901
diff
changeset
|
3168 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3169 |
# Get original base image info |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3170 |
(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
|
3171 |
context, instance['image_ref']) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3172 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3173 |
base = base_service.show(context, base_id) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3174 |
except exception.ImageNotFound: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3175 |
base = {} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3176 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3177 |
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
|
3178 |
context, image_id) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3179 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3180 |
# Build updated snapshot image metadata |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3181 |
snapshot = snapshot_service.show(context, snapshot_id) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3182 |
metadata = { |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3183 |
'is_public': False, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3184 |
'status': 'active', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3185 |
'name': snapshot['name'], |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3186 |
'properties': { |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3187 |
'image_location': 'snapshot', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3188 |
'image_state': 'available', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3189 |
'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
|
3190 |
'instance_uuid': instance['uuid'], |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3191 |
'image_type': snapshot['properties']['image_type'], |
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 |
# 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
|
3195 |
# image. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3196 |
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
|
3197 |
if prop in base.get('properties', {}): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3198 |
base_prop = base['properties'][prop] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3199 |
metadata['properties'][prop] = base_prop |
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 |
# Set generic container and disk formats initially in case the glance |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3202 |
# service rejects Unified Archives (uar) and ZFS in metadata. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3203 |
metadata['container_format'] = 'ovf' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3204 |
metadata['disk_format'] = 'raw' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3205 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3206 |
update_task_state(task_state=task_states.IMAGE_PENDING_UPLOAD) |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3207 |
snapshot_directory = CONF.solariszones.solariszones_snapshots_directory |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3208 |
fileutils.ensure_tree(snapshot_directory) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3209 |
snapshot_name = uuid.uuid4().hex |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3210 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3211 |
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
|
3212 |
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
|
3213 |
zone_name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3214 |
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
|
3215 |
'-z', zone_name, out_path) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3216 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3217 |
LOG.info(_("Snapshot extracted, beginning image upload"), |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3218 |
instance=instance) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3219 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3220 |
# 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
|
3221 |
update_task_state( |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3222 |
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
|
3223 |
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
|
3224 |
with open(out_path, 'r') as image_file: |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3225 |
snapshot_service.update(context, image_id, metadata, |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3226 |
image_file) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3227 |
LOG.info(_("Snapshot image upload complete"), |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3228 |
instance=instance) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3229 |
try: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3230 |
# 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
|
3231 |
# 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
|
3232 |
# glance server recognises them. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3233 |
metadata['container_format'] = 'uar' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3234 |
metadata['disk_format'] = 'zfs' |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3235 |
snapshot_service.update(context, image_id, metadata, None) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
3236 |
except exception.Invalid: |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3237 |
LOG.warning(_("Image service rejected image metadata " |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3238 |
"container and disk formats 'uar' and " |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3239 |
"'zfs'. Using generic values 'ovf' and " |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3240 |
"'raw' as fallbacks.")) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3241 |
finally: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3242 |
# Delete the snapshot image file source |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3243 |
os.unlink(out_path) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3244 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3245 |
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
|
3246 |
"""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
|
3247 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3248 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3249 |
: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
|
3250 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3251 |
pass |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3252 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3253 |
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
|
3254 |
network_info, samehost): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3255 |
"""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
|
3256 |
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
|
3257 |
resources. |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3258 |
""" |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3259 |
if disk_info: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3260 |
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
|
3261 |
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
|
3262 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3263 |
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
|
3264 |
if old_rvid: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3265 |
connector = self.get_volume_connector(instance) |
7583
612b249c2397
25202866 Nova resize fails with Pure storage iSCSI back-end
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7475
diff
changeset
|
3266 |
connection_info = self._initialize_volume_connection(context, |
612b249c2397
25202866 Nova resize fails with Pure storage iSCSI back-end
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7475
diff
changeset
|
3267 |
old_rvid, |
612b249c2397
25202866 Nova resize fails with Pure storage iSCSI back-end
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7475
diff
changeset
|
3268 |
connector) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3269 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3270 |
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
|
3271 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3272 |
rootmp = instance.root_device_name |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3273 |
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
|
3274 |
rootmp) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3275 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3276 |
bdmobj = objects.BlockDeviceMapping() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3277 |
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
|
3278 |
bdm['connection_info'] = jsonutils.dumps(connection_info) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3279 |
bdm['volume_id'] = old_rvid |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3280 |
bdm.save() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3281 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3282 |
del instance.system_metadata['new_instance_volid'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3283 |
del instance.system_metadata['old_instance_volid'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3284 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3285 |
if not samehost: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3286 |
self.destroy(context, instance, network_info) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3287 |
instance['host'] = instance['launched_on'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3288 |
instance['node'] = instance['launched_on'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3289 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3290 |
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
|
3291 |
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
|
3292 |
block_device_info=None, power_on=True): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3293 |
"""Completes a resize/migration. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3294 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3295 |
: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
|
3296 |
: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
|
3297 |
: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
|
3298 |
: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
|
3299 |
:param network_info: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3300 |
:py:meth:`~nova.network.manager.NetworkManager.get_instance_nw_info` |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3301 |
:param nova.objects.ImageMeta image_meta: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3302 |
The metadata of the image of the instance. |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3303 |
: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
|
3304 |
False otherwise |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3305 |
: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
|
3306 |
: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
|
3307 |
otherwise |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3308 |
""" |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3309 |
samehost = (migration['dest_node'] == migration['source_node']) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3310 |
if samehost: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3311 |
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
|
3312 |
|
7263
d601ec170433
18780229 filter scheduler provides no details with bad flavor definition
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7027
diff
changeset
|
3313 |
extra_specs = self._get_flavor(instance)['extra_specs'].copy() |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3314 |
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
|
3315 |
name = instance['name'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3316 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3317 |
if disk_info: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3318 |
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
|
3319 |
rootmp = instance['root_device_name'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3320 |
for entry in bmap: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3321 |
if entry['mount_device'] == rootmp: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3322 |
mount_dev = entry['mount_device'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3323 |
root_ci = entry['connection_info'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3324 |
break |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3325 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3326 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3327 |
if samehost: |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3328 |
cpu = instance.vcpus |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3329 |
mem = instance.memory_mb |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3330 |
self._set_num_cpu(name, cpu, brand) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3331 |
self._set_memory_cap(name, mem, brand) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3332 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3333 |
# 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
|
3334 |
# changed |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3335 |
if disk_info: |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3336 |
rgb = instance.root_gb |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3337 |
self._resize_disk_migration(context, instance, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3338 |
root_ci['serial'], |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3339 |
disk_info['id'], rgb, |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3340 |
mount_dev) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3341 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3342 |
else: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3343 |
# 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
|
3344 |
# 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
|
3345 |
mount_dev = 'c1d0' |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3346 |
root_serial = root_ci['serial'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3347 |
connection_info = self._resize_disk_migration(context, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3348 |
instance, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3349 |
root_serial, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3350 |
disk_info['id'], |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3351 |
0, mount_dev, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3352 |
samehost) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3353 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3354 |
self._create_config(context, instance, network_info, |
5436
2c7413fb2a81
22691630 attempting to resize or evacuate with a network is broken
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5405
diff
changeset
|
3355 |
connection_info, None) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3356 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3357 |
zone = self._get_zone_by_name(name) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3358 |
if zone is None: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3359 |
raise exception.InstanceNotFound(instance_id=name) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3360 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3361 |
zone.attach(['-x', 'initialize-hostdata']) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3362 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3363 |
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
|
3364 |
for entry in bmap: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3365 |
if entry['mount_device'] != rootmp: |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3366 |
self.attach_volume(context, entry['connection_info'], |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3367 |
instance, entry['mount_device']) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3368 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3369 |
if power_on: |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
3370 |
self._power_on(instance, network_info) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3371 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3372 |
if brand == ZONE_BRAND_SOLARIS: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3373 |
return |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3374 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3375 |
# 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
|
3376 |
# 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
|
3377 |
# 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
|
3378 |
# 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
|
3379 |
# 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
|
3380 |
# can remove this hack. |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3381 |
greenthread.sleep(15) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3382 |
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
|
3383 |
'/usr/sbin/zpool', 'set', |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3384 |
'autoexpand=off', 'rpool') |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3385 |
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
|
3386 |
'/usr/sbin/zpool', 'set', |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3387 |
'autoexpand=on', 'rpool') |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3388 |
except Exception: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3389 |
# 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
|
3390 |
# 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
|
3391 |
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
|
3392 |
network_info, samehost) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3393 |
raise |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3394 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3395 |
def confirm_migration(self, context, migration, instance, network_info): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3396 |
"""Confirms a resize/migration, destroying the source VM. |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3397 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3398 |
: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
|
3399 |
""" |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3400 |
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
|
3401 |
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
|
3402 |
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
|
3403 |
if new_rvid and old_rvid: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3404 |
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
|
3405 |
del instance.system_metadata['old_instance_volid'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3406 |
del instance.system_metadata['new_instance_volid'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3407 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3408 |
self._volume_api.delete(context, old_rvid) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3409 |
self._volume_api.update(context, new_rvid, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3410 |
{'display_name': new_vname}) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3411 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3412 |
if not samehost: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3413 |
self.destroy(context, instance, network_info) |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3414 |
else: |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3415 |
del instance.system_metadata['resize_samehost'] |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3416 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3417 |
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
|
3418 |
replacement, newvolumesz, mountdev, |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3419 |
samehost=True): |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3420 |
"""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
|
3421 |
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
|
3422 |
same host |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3423 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3424 |
: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
|
3425 |
: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
|
3426 |
: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
|
3427 |
:param replacement: id of the new volume |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3428 |
:param newvolumesz: size of the new volume |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3429 |
: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
|
3430 |
: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
|
3431 |
""" |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3432 |
connector = self.get_volume_connector(instance) |
7583
612b249c2397
25202866 Nova resize fails with Pure storage iSCSI back-end
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7475
diff
changeset
|
3433 |
connection_info = self._initialize_volume_connection(context, |
612b249c2397
25202866 Nova resize fails with Pure storage iSCSI back-end
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7475
diff
changeset
|
3434 |
replacement, |
612b249c2397
25202866 Nova resize fails with Pure storage iSCSI back-end
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7475
diff
changeset
|
3435 |
connector) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3436 |
rootmp = instance.root_device_name |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3437 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3438 |
if samehost: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3439 |
name = instance['name'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3440 |
zone = self._get_zone_by_name(name) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3441 |
if zone is None: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3442 |
raise exception.InstanceNotFound(instance_id=name) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3443 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3444 |
# 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
|
3445 |
# 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
|
3446 |
# not fail. |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3447 |
if zone.brand == ZONE_BRAND_SOLARIS: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3448 |
zone.detach() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3449 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3450 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3451 |
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
|
3452 |
finally: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3453 |
if zone.brand == ZONE_BRAND_SOLARIS: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3454 |
zone.attach() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3455 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3456 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3457 |
self._volume_api.detach(context, configured) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3458 |
except Exception: |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
3459 |
LOG.exception(_("Failed to detach the volume")) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3460 |
raise |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3461 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3462 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3463 |
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
|
3464 |
rootmp) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3465 |
except Exception: |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
3466 |
LOG.exception(_("Failed to attach the volume")) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3467 |
raise |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3468 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3469 |
bdmobj = objects.BlockDeviceMapping() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3470 |
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
|
3471 |
bdm['connection_info'] = jsonutils.dumps(connection_info) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3472 |
bdm['volume_id'] = replacement |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3473 |
bdm.save() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3474 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3475 |
if not samehost: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3476 |
return connection_info |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3477 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3478 |
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
|
3479 |
block_device_info=None, power_on=True): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3480 |
"""Finish reverting a resize/migration. |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3481 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3482 |
: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
|
3483 |
: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
|
3484 |
:param network_info: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3485 |
: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
|
3486 |
: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
|
3487 |
: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
|
3488 |
otherwise |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3489 |
""" |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3490 |
# If this is not a samehost migration then we need to re-attach the |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3491 |
# original volume to the instance. Otherwise we need to update the |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3492 |
# original zone configuration. |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3493 |
samehost = instance.system_metadata.get('resize_samehost') |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3494 |
if samehost: |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3495 |
self._samehost_revert_resize(context, instance, network_info, |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3496 |
block_device_info) |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3497 |
del instance.system_metadata['resize_samehost'] |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3498 |
|
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3499 |
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
|
3500 |
if old_rvid: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3501 |
connector = self.get_volume_connector(instance) |
7583
612b249c2397
25202866 Nova resize fails with Pure storage iSCSI back-end
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7475
diff
changeset
|
3502 |
connection_info = self._initialize_volume_connection(context, |
612b249c2397
25202866 Nova resize fails with Pure storage iSCSI back-end
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7475
diff
changeset
|
3503 |
old_rvid, |
612b249c2397
25202866 Nova resize fails with Pure storage iSCSI back-end
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7475
diff
changeset
|
3504 |
connector) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3505 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3506 |
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
|
3507 |
self._volume_api.detach(context, new_rvid) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3508 |
self._volume_api.delete(context, new_rvid) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3509 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3510 |
rootmp = instance.root_device_name |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3511 |
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
|
3512 |
rootmp) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3513 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3514 |
bdmobj = objects.BlockDeviceMapping() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3515 |
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
|
3516 |
bdm['connection_info'] = jsonutils.dumps(connection_info) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3517 |
bdm['volume_id'] = old_rvid |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3518 |
bdm.save() |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3519 |
|
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3520 |
del instance.system_metadata['new_instance_volid'] |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3521 |
del instance.system_metadata['old_instance_volid'] |
5252
947514442d05
22513201 nova resize revert will fail if there are volumes attached
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5196
diff
changeset
|
3522 |
else: |
5608
3a50019e38cf
22750945 Revert resize same host branded zones results in error status
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5607
diff
changeset
|
3523 |
new_rvid = instance.system_metadata.get('new_instance_volid') |
5252
947514442d05
22513201 nova resize revert will fail if there are volumes attached
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5196
diff
changeset
|
3524 |
if new_rvid: |
947514442d05
22513201 nova resize revert will fail if there are volumes attached
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5196
diff
changeset
|
3525 |
del instance.system_metadata['new_instance_volid'] |
947514442d05
22513201 nova resize revert will fail if there are volumes attached
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5196
diff
changeset
|
3526 |
self._volume_api.delete(context, new_rvid) |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
3527 |
|
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
3528 |
self._power_on(instance, network_info) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3529 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3530 |
def pause(self, instance): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3531 |
"""Pause the given instance. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3532 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3533 |
A paused instance doesn't use CPU cycles of the host anymore. The |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3534 |
state of the VM could be stored in the memory or storage space of the |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3535 |
host, depending on the underlying hypervisor technology. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3536 |
A "stronger" version of `pause` is :func:'suspend'. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3537 |
The counter action for `pause` is :func:`unpause`. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3538 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3539 |
:param nova.objects.instance.Instance instance: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3540 |
The instance which should be paused. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3541 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3542 |
:return: None |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3543 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3544 |
# 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
|
3545 |
raise NotImplementedError() |
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 unpause(self, instance): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3548 |
"""Unpause the given paused instance. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3549 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3550 |
The paused instance gets unpaused and will use CPU cycles of the |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3551 |
host again. The counter action for 'unpause' is :func:`pause`. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3552 |
Depending on the underlying hypervisor technology, the guest has the |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3553 |
same state as before the 'pause'. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3554 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3555 |
:param nova.objects.instance.Instance instance: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3556 |
The instance which should be unpaused. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3557 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3558 |
:return: None |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3559 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3560 |
# 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
|
3561 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3562 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
3563 |
def suspend(self, context, instance): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3564 |
"""Suspend the specified instance. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3565 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3566 |
A suspended instance doesn't use CPU cycles or memory of the host |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3567 |
anymore. The state of the instance could be persisted on the host |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3568 |
and allocate storage space this way. A "softer" way of `suspend` |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3569 |
is :func:`pause`. The counter action for `suspend` is :func:`resume`. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3570 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3571 |
:param nova.context.RequestContext context: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3572 |
The context for the suspend. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3573 |
:param nova.objects.instance.Instance instance: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3574 |
The instance to suspend. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3575 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3576 |
:return: None |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3577 |
""" |
4781
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3578 |
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
|
3579 |
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
|
3580 |
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
|
3581 |
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
|
3582 |
|
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3583 |
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
|
3584 |
# 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
|
3585 |
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
|
3586 |
"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
|
3587 |
"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
|
3588 |
% (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
|
3589 |
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
|
3590 |
|
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3591 |
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
|
3592 |
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
|
3593 |
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
|
3594 |
|
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3595 |
try: |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3596 |
new_path = os.path.join(CONF.solariszones.zones_suspend_path, |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3597 |
'%{zonename}') |
4781
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3598 |
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
|
3599 |
# 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
|
3600 |
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
|
3601 |
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
|
3602 |
# 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
|
3603 |
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
|
3604 |
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
|
3605 |
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
|
3606 |
|
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3607 |
zone.suspend() |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
3608 |
self._unplug_vifs(instance) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
3609 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
3610 |
reason = zonemgr_strerror(ex) |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
3611 |
LOG.exception(_("Unable to suspend instance '%s' via " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
3612 |
"zonemgr(3RAD): %s") % (name, reason)) |
4781
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3613 |
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
|
3614 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3615 |
def resume(self, context, instance, network_info, block_device_info=None): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3616 |
"""resume the specified suspended instance. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3617 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3618 |
The suspended instance gets resumed and will use CPU cycles and memory |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3619 |
of the host again. The counter action for 'resume' is :func:`suspend`. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3620 |
Depending on the underlying hypervisor technology, the guest has the |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3621 |
same state as before the 'suspend'. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3622 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3623 |
:param nova.context.RequestContext context: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3624 |
The context for the resume. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3625 |
:param nova.objects.instance.Instance instance: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3626 |
The suspended instance to resume. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3627 |
:param nova.network.model.NetworkInfo network_info: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3628 |
Necessary network information for the resume. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3629 |
:param dict block_device_info: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3630 |
Instance volume block device info. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3631 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3632 |
:return: None |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3633 |
""" |
4781
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3634 |
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
|
3635 |
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
|
3636 |
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
|
3637 |
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
|
3638 |
|
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3639 |
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
|
3640 |
# 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
|
3641 |
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
|
3642 |
"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
|
3643 |
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
|
3644 |
|
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3645 |
# 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
|
3646 |
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
|
3647 |
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
|
3648 |
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
|
3649 |
|
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3650 |
try: |
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3651 |
zone.boot() |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
3652 |
self._plug_vifs(instance, network_info) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
3653 |
except Exception as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
3654 |
reason = zonemgr_strerror(ex) |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
3655 |
LOG.exception(_("Unable to resume instance '%s' via " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
3656 |
"zonemgr(3RAD): %s") % (name, reason)) |
4781
93d68a5ece25
PSARC 2015/357 OpenStack Nova support for kernel zone suspend/resume
Elena Ouyang <elena.ouyang@oracle.com>
parents:
4736
diff
changeset
|
3657 |
raise exception.InstanceResumeFailure(reason=reason) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3658 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3659 |
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
|
3660 |
block_device_info=None): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3661 |
"""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
|
3662 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3663 |
: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
|
3664 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3665 |
name = instance['name'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3666 |
zone = self._get_zone_by_name(name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3667 |
if zone is None: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3668 |
raise exception.InstanceNotFound(instance_id=name) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3669 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3670 |
# 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
|
3671 |
# property. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3672 |
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
|
3673 |
power_state.SHUTDOWN): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3674 |
return |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3675 |
|
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
3676 |
self._power_on(instance, network_info) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3677 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3678 |
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
|
3679 |
rescue_password): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3680 |
"""Rescue the specified instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3681 |
|
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3682 |
:param nova.context.RequestContext context: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3683 |
The context for the rescue. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3684 |
:param nova.objects.instance.Instance instance: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3685 |
The instance being rescued. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3686 |
:param nova.network.model.NetworkInfo network_info: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3687 |
Necessary network information for the resume. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3688 |
:param nova.objects.ImageMeta image_meta: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3689 |
The metadata of the image of the instance. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3690 |
:param rescue_password: new root password to set for rescue. |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3691 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3692 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3693 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3694 |
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
|
3695 |
"""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
|
3696 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3697 |
: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
|
3698 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3699 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3700 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3701 |
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
|
3702 |
"""Unrescue the specified instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3703 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3704 |
: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
|
3705 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3706 |
# 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
|
3707 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3708 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3709 |
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
|
3710 |
"""Power off the specified instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3711 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3712 |
: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
|
3713 |
: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
|
3714 |
: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
|
3715 |
waiting for it to shutdown |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3716 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3717 |
self._power_off(instance, 'SOFT') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3718 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3719 |
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
|
3720 |
block_device_info=None): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3721 |
"""Power on the specified instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3722 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3723 |
: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
|
3724 |
""" |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
3725 |
self._power_on(instance, network_info) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3726 |
|
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3727 |
def trigger_crash_dump(self, instance): |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3728 |
"""Trigger crash dump mechanism on the given instance. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3729 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3730 |
Stalling instances can be triggered to dump the crash data. How the |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3731 |
guest OS reacts in details, depends on the configuration of it. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3732 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3733 |
:param nova.objects.instance.Instance instance: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3734 |
The instance where the crash dump should be triggered. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3735 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3736 |
:return: None |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3737 |
""" |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3738 |
raise NotImplementedError() |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3739 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3740 |
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
|
3741 |
"""Soft delete the specified instance. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3742 |
|
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3743 |
A soft-deleted instance doesn't allocate any resources anymore, but is |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3744 |
still available as a database entry. The counter action :func:`restore` |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3745 |
uses the database entry to create a new instance based on that. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3746 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3747 |
:param nova.objects.instance.Instance instance: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3748 |
The instance to soft-delete. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3749 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3750 |
:return: None |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3751 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3752 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3753 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3754 |
def restore(self, instance): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3755 |
"""Restore the specified soft-deleted instance. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3756 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3757 |
The restored instance will be automatically booted. The counter action |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3758 |
for `restore` is :func:`soft_delete`. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3759 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3760 |
:param nova.objects.instance.Instance instance: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3761 |
The soft-deleted instance which should be restored from the |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3762 |
soft-deleted data. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3763 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3764 |
:return: None |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3765 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3766 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3767 |
|
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
|
3768 |
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
|
3769 |
"""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
|
3770 |
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
|
3771 |
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
|
3772 |
(out, _err) = utils.execute('/usr/sbin/zpool', 'get', prop, zpool) |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
3773 |
except processutils.ProcessExecutionError as ex: |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
3774 |
reason = ex.stderr |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
3775 |
LOG.exception(_("Failed to get property '%s' from zpool '%s': %s") |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
3776 |
% (prop, zpool, reason)) |
1840
bfe6a6253fcd
18617606 local_gb is 0 and free_disk_fb is negative in output of nova hypervisor_show
Strony <strony.zhang@oracle.com>
parents:
1760
diff
changeset
|
3777 |
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
|
3778 |
|
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
|
3779 |
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
|
3780 |
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
|
3781 |
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
|
3782 |
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
|
3783 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3784 |
def _update_host_stats(self): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3785 |
"""Update currently known host stats.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3786 |
host_stats = {} |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3787 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3788 |
host_stats['vcpus'] = os.sysconf('SC_NPROCESSORS_ONLN') |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3789 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3790 |
pages = os.sysconf('SC_PHYS_PAGES') |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3791 |
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
|
3792 |
|
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
|
3793 |
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
|
3794 |
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
|
3795 |
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
|
3796 |
if size is not None: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3797 |
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
|
3798 |
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
|
3799 |
host_stats['local_gb'] = 0 |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3800 |
|
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3801 |
# Account for any existing processor sets by looking at the the number |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3802 |
# of CPUs not assigned to any processor sets. |
7266
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
3803 |
uri = "kstat:/misc/unix/pset/0" |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
3804 |
data = self._kstat_data(uri) |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
3805 |
|
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
3806 |
if data is not None: |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
3807 |
host_stats['vcpus_used'] = host_stats['vcpus'] - data['ncpus'] |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3808 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3809 |
host_stats['vcpus_used'] = 0 |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3810 |
|
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3811 |
# Subtract the number of free pages from the total to get the used. |
7266
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
3812 |
uri = "kstat:/pages/unix/system_pages" |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
3813 |
data = self._kstat_data(uri) |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
3814 |
if data is not None: |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
3815 |
free_ram = data['freemem'] |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
3816 |
free_ram = self._pages_to_kb(free_ram) / 1024 |
02c0ccd65cf9
21344183 Nova driver should account for PSARC 2014/384
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7265
diff
changeset
|
3817 |
host_stats['memory_mb_used'] = host_stats['memory_mb'] - free_ram |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3818 |
else: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3819 |
host_stats['memory_mb_used'] = 0 |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3820 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3821 |
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
|
3822 |
if free is not None: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3823 |
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
|
3824 |
else: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3825 |
free_disk_gb = 0 |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3826 |
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
|
3827 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3828 |
host_stats['hypervisor_type'] = 'solariszones' |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3829 |
host_stats['hypervisor_version'] = \ |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3830 |
versionutils.convert_version_to_int(HYPERVISOR_VERSION) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3831 |
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
|
3832 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3833 |
if self._uname[4] == 'i86pc': |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3834 |
architecture = arch.X86_64 |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3835 |
else: |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3836 |
architecture = arch.SPARC64 |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3837 |
cpu_info = { |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3838 |
'arch': architecture |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3839 |
} |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3840 |
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
|
3841 |
|
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3842 |
host_stats['disk_available_least'] = free_disk_gb |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3843 |
host_stats['supported_instances'] = [ |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3844 |
(architecture, hv_type.SOLARISZONES, vm_mode.SOL) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3845 |
] |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3846 |
host_stats['numa_topology'] = None |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3847 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3848 |
self._host_stats = host_stats |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3849 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3850 |
def get_available_resource(self, nodename): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3851 |
"""Retrieve resource information. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3852 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3853 |
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
|
3854 |
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
|
3855 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3856 |
:param nodename: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3857 |
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
|
3858 |
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
|
3859 |
:returns: Dictionary describing resources |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3860 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3861 |
self._update_host_stats() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3862 |
host_stats = self._host_stats |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3863 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3864 |
resources = {} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3865 |
resources['vcpus'] = host_stats['vcpus'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3866 |
resources['memory_mb'] = host_stats['memory_mb'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3867 |
resources['local_gb'] = host_stats['local_gb'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3868 |
resources['vcpus_used'] = host_stats['vcpus_used'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3869 |
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
|
3870 |
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
|
3871 |
resources['hypervisor_type'] = host_stats['hypervisor_type'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3872 |
resources['hypervisor_version'] = host_stats['hypervisor_version'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3873 |
resources['hypervisor_hostname'] = host_stats['hypervisor_hostname'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3874 |
resources['cpu_info'] = host_stats['cpu_info'] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3875 |
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
|
3876 |
resources['supported_instances'] = host_stats['supported_instances'] |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3877 |
resources['numa_topology'] = host_stats['numa_topology'] |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3878 |
return resources |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3879 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3880 |
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
|
3881 |
network_info, disk_info, migrate_data=None): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3882 |
"""Prepare an instance for live migration |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3883 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3884 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3885 |
: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
|
3886 |
: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
|
3887 |
:param network_info: instance network information |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3888 |
:param disk_info: instance disk information |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3889 |
:param migrate_data: a LiveMigrateData object |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3890 |
""" |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3891 |
return migrate_data |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3892 |
|
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3893 |
def _live_migration(self, name, dest, dry_run=False): |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3894 |
"""Live migration of a Solaris kernel zone to another host.""" |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3895 |
zone = self._get_zone_by_name(name) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3896 |
if zone is None: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3897 |
raise exception.InstanceNotFound(instance_id=name) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3898 |
|
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3899 |
options = [] |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3900 |
live_migration_cipher = CONF.solariszones.live_migration_cipher |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3901 |
if live_migration_cipher is not None: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3902 |
options.extend(['-c', live_migration_cipher]) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3903 |
if dry_run: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3904 |
options.append('-nq') |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3905 |
options.append('ssh://nova@' + dest) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3906 |
zone.migrate(options) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3907 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3908 |
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
|
3909 |
post_method, recover_method, block_migration=False, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3910 |
migrate_data=None): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3911 |
"""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
|
3912 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3913 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3914 |
:param instance: |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3915 |
nova.db.sqlalchemy.models.Instance object |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3916 |
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
|
3917 |
:param dest: destination host |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3918 |
:param post_method: |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3919 |
post operation method. |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3920 |
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
|
3921 |
:param recover_method: |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3922 |
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
|
3923 |
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
|
3924 |
:param block_migration: if true, migrate VM disk. |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3925 |
:param migrate_data: a LiveMigrateData object |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3926 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3927 |
""" |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3928 |
name = instance['name'] |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3929 |
try: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3930 |
self._live_migration(name, dest, dry_run=False) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3931 |
except Exception as ex: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3932 |
with excutils.save_and_reraise_exception(): |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
3933 |
reason = zonemgr_strerror(ex) |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
3934 |
LOG.exception(_("Unable to live migrate instance '%s' to host " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
3935 |
"'%s' via zonemgr(3RAD): %s") |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
3936 |
% (name, dest, reason)) |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3937 |
recover_method(context, instance, dest, block_migration) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3938 |
|
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3939 |
post_method(context, instance, dest, block_migration, migrate_data) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3940 |
|
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3941 |
def live_migration_force_complete(self, instance): |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3942 |
"""Force live migration to complete |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3943 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3944 |
:param instance: Instance being live migrated |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3945 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3946 |
""" |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3947 |
raise NotImplementedError() |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3948 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3949 |
def live_migration_abort(self, instance): |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3950 |
"""Abort an in-progress live migration. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3951 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3952 |
:param instance: instance that is live migrating |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3953 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3954 |
""" |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3955 |
raise NotImplementedError() |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3956 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3957 |
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
|
3958 |
network_info, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3959 |
block_device_info, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3960 |
destroy_disks=True, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3961 |
migrate_data=None): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3962 |
"""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
|
3963 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3964 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3965 |
: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
|
3966 |
: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
|
3967 |
: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
|
3968 |
:param destroy_disks: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3969 |
if true, destroy disks at destination during cleanup |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3970 |
:param migrate_data: a LiveMigrateData object |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3971 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3972 |
""" |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3973 |
pass |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3974 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3975 |
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
|
3976 |
migrate_data=None): |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3977 |
"""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
|
3978 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3979 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
3980 |
: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
|
3981 |
:block_device_info: instance block device information |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
3982 |
:param migrate_data: a LiveMigrateData object |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
3983 |
""" |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3984 |
try: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3985 |
# These methods log if problems occur so no need to double log |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3986 |
# here. Just catch any stray exceptions and allow destroy to |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3987 |
# proceed. |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3988 |
if self._has_vnc_console_service(instance): |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3989 |
self._disable_vnc_console_service(instance) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3990 |
self._delete_vnc_console_service(instance) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3991 |
except Exception: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3992 |
pass |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3993 |
|
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3994 |
name = instance['name'] |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3995 |
zone = self._get_zone_by_name(name) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3996 |
# If instance cannot be found, just return. |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3997 |
if zone is None: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3998 |
LOG.warning(_("Unable to find instance '%s' via zonemgr(3RAD)") |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
3999 |
% name) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4000 |
return |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4001 |
|
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4002 |
try: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4003 |
self._delete_config(instance) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4004 |
except Exception as ex: |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
4005 |
reason = zonemgr_strerror(ex) |
7264
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
4006 |
LOG.exception(_("Unable to delete configuration for instance '%s' " |
86d356dd86aa
20052404 Add log.exception() to our drivers for errors
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7263
diff
changeset
|
4007 |
"via zonemgr(3RAD): %s") % (name, reason)) |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4008 |
raise |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4009 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4010 |
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
|
4011 |
"""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
|
4012 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4013 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4014 |
:param instance: instance object reference |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4015 |
: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
|
4016 |
""" |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
4017 |
self._unplug_vifs(instance) |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4018 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4019 |
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
|
4020 |
network_info, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4021 |
block_migration=False, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4022 |
block_device_info=None): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4023 |
"""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
|
4024 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4025 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4026 |
: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
|
4027 |
:param network_info: instance network information |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4028 |
: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
|
4029 |
""" |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
6014
diff
changeset
|
4030 |
self._plug_vifs(instance, network_info) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4031 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4032 |
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
|
4033 |
"""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
|
4034 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4035 |
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
|
4036 |
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
|
4037 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4038 |
:param context: security context |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4039 |
:param instance: nova.objects.instance.Instance object |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4040 |
""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4041 |
raise NotImplementedError() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4042 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4043 |
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
|
4044 |
"""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
|
4045 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4046 |
:param context: security context |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4047 |
: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
|
4048 |
""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4049 |
raise NotImplementedError() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4050 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4051 |
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
|
4052 |
"""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
|
4053 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4054 |
:param context: security context |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4055 |
: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
|
4056 |
""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4057 |
pass |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4058 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4059 |
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
|
4060 |
src_compute_info, dst_compute_info, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4061 |
block_migration=False, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4062 |
disk_over_commit=False): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4063 |
"""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
|
4064 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4065 |
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
|
4066 |
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
|
4067 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4068 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4069 |
: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
|
4070 |
: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
|
4071 |
: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
|
4072 |
: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
|
4073 |
:param disk_over_commit: if true, allow disk over commit |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4074 |
:returns: a LiveMigrateData object (hypervisor-dependent) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4075 |
""" |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4076 |
src_cpu_info = jsonutils.loads(src_compute_info['cpu_info']) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4077 |
src_cpu_arch = src_cpu_info['arch'] |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4078 |
dst_cpu_info = jsonutils.loads(dst_compute_info['cpu_info']) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4079 |
dst_cpu_arch = dst_cpu_info['arch'] |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4080 |
if src_cpu_arch != dst_cpu_arch: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4081 |
reason = (_("CPU architectures between source host '%s' (%s) and " |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4082 |
"destination host '%s' (%s) are incompatible.") |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4083 |
% (src_compute_info['hypervisor_hostname'], src_cpu_arch, |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4084 |
dst_compute_info['hypervisor_hostname'], |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4085 |
dst_cpu_arch)) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4086 |
raise exception.MigrationPreCheckError(reason=reason) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4087 |
|
7263
d601ec170433
18780229 filter scheduler provides no details with bad flavor definition
Sean Wilcox <sean.wilcox@oracle.com>
parents:
7027
diff
changeset
|
4088 |
extra_specs = self._get_flavor(instance)['extra_specs'].copy() |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4089 |
brand = extra_specs.get('zonecfg:brand', ZONE_BRAND_SOLARIS) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4090 |
if brand != ZONE_BRAND_SOLARIS_KZ: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4091 |
# Only Solaris kernel zones are currently supported. |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4092 |
reason = (_("'%s' branded zones do not currently support live " |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4093 |
"migration.") % brand) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4094 |
raise exception.MigrationPreCheckError(reason=reason) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4095 |
|
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4096 |
if block_migration: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4097 |
reason = (_('Block migration is not currently supported.')) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4098 |
raise exception.MigrationPreCheckError(reason=reason) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4099 |
if disk_over_commit: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4100 |
reason = (_('Disk overcommit is not currently supported.')) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4101 |
raise exception.MigrationPreCheckError(reason=reason) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4102 |
|
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4103 |
dest_check_data = objects.SolarisZonesLiveMigrateData() |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4104 |
dest_check_data.hypervisor_hostname = \ |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4105 |
dst_compute_info['hypervisor_hostname'] |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4106 |
return dest_check_data |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4107 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4108 |
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
|
4109 |
dest_check_data): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4110 |
"""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
|
4111 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4112 |
:param context: security context |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4113 |
: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
|
4114 |
""" |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4115 |
pass |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4116 |
|
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4117 |
def _check_local_volumes_present(self, block_device_info): |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4118 |
"""Check if local volumes are attached to the instance.""" |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4119 |
bmap = block_device_info.get('block_device_mapping') |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4120 |
for entry in bmap: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4121 |
connection_info = entry['connection_info'] |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4122 |
driver_type = connection_info['driver_volume_type'] |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4123 |
if driver_type == 'local': |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4124 |
reason = (_("Instances with attached '%s' volumes are not " |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4125 |
"currently supported.") % driver_type) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4126 |
raise exception.MigrationPreCheckError(reason=reason) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4127 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4128 |
def check_can_live_migrate_source(self, context, instance, |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4129 |
dest_check_data, block_device_info=None): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4130 |
"""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
|
4131 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4132 |
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
|
4133 |
results from check_can_live_migrate_destination. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4134 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4135 |
:param context: security context |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4136 |
: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
|
4137 |
:param dest_check_data: result of check_can_live_migrate_destination |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4138 |
:param block_device_info: result of _get_instance_block_device_info |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4139 |
:returns: a LiveMigrateData object |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4140 |
""" |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4141 |
if not isinstance(dest_check_data, migrate_data_obj.LiveMigrateData): |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4142 |
obj = objects.SolarisZonesLiveMigrateData() |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4143 |
obj.from_legacy_dict(dest_check_data) |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4144 |
dest_check_data = obj |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4145 |
|
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4146 |
self._check_local_volumes_present(block_device_info) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4147 |
name = instance['name'] |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4148 |
dest = dest_check_data.hypervisor_hostname |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4149 |
try: |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4150 |
self._live_migration(name, dest, dry_run=True) |
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4151 |
except Exception as ex: |
5196
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
4152 |
reason = zonemgr_strerror(ex) |
469925bac9fd
22185397 Nova driver could have improved zonemgr(3RAD) exception handling
david.comay@oracle.com
parents:
5195
diff
changeset
|
4153 |
raise exception.MigrationPreCheckError(reason=reason) |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4154 |
return dest_check_data |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4155 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4156 |
def get_instance_disk_info(self, instance, |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4157 |
block_device_info=None): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4158 |
"""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
|
4159 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4160 |
:param instance: nova.objects.Instance |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4161 |
:param block_device_info: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4162 |
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
|
4163 |
actually volumes. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4164 |
:return: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4165 |
json strings with below format:: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4166 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4167 |
"[{'path':'disk', |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4168 |
'type':'raw', |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4169 |
'virt_disk_size':'10737418240', |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4170 |
'backing_file':'backing_file', |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4171 |
'disk_size':'83886080' |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4172 |
'over_committed_disk_size':'10737418240'}, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4173 |
...]" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4174 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4175 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4176 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4177 |
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
|
4178 |
"""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
|
4179 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4180 |
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
|
4181 |
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
|
4182 |
running the specified security group. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4183 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4184 |
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
|
4185 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4186 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4187 |
# 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
|
4188 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4189 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4190 |
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
|
4191 |
"""Refresh security group rules |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4192 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4193 |
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
|
4194 |
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
|
4195 |
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
|
4196 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4197 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4198 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4199 |
def reset_network(self, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4200 |
"""reset networking for specified instance.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4201 |
# 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
|
4202 |
pass |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4203 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4204 |
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
|
4205 |
"""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
|
4206 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4207 |
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
|
4208 |
and firewalls are inevitable on destination host. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4209 |
( Waiting only for filtering rules to hypervisor, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4210 |
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
|
4211 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4212 |
Concretely, the below method must be called. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4213 |
- setup_basic_filtering (for nova-basic, etc.) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4214 |
- 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
|
4215 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4216 |
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
|
4217 |
but libvirt migrates those value through migrateToURI(), |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4218 |
so , no need to be called. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4219 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4220 |
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
|
4221 |
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
|
4222 |
are not completed. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4223 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4224 |
: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
|
4225 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4226 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4227 |
# TODO(Vek): Need to pass context in for access to auth_token |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4228 |
pass |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4229 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4230 |
def filter_defer_apply_on(self): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4231 |
"""Defer application of IPTables rules.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4232 |
pass |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4233 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4234 |
def filter_defer_apply_off(self): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4235 |
"""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
|
4236 |
pass |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4237 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4238 |
def unfilter_instance(self, instance, network_info): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4239 |
"""Stop filtering instance.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4240 |
# TODO(Vek): Need to pass context in for access to auth_token |
5195
694672bf3c17
PSARC 2015/324 OpenStack Nova support for kernel zone live-migration
david.comay@oracle.com
parents:
5194
diff
changeset
|
4241 |
pass |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4242 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4243 |
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
|
4244 |
"""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
|
4245 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4246 |
:param instance: nova.objects.instance.Instance |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4247 |
:param new_pass: the new password |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4248 |
""" |
5312
b5fa281dd501
21660635 root-password functionality required for defcore coverage
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5311
diff
changeset
|
4249 |
name = instance['name'] |
b5fa281dd501
21660635 root-password functionality required for defcore coverage
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5311
diff
changeset
|
4250 |
zone = self._get_zone_by_name(name) |
b5fa281dd501
21660635 root-password functionality required for defcore coverage
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5311
diff
changeset
|
4251 |
if zone is None: |
b5fa281dd501
21660635 root-password functionality required for defcore coverage
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5311
diff
changeset
|
4252 |
raise exception.InstanceNotFound(instance_id=name) |
b5fa281dd501
21660635 root-password functionality required for defcore coverage
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5311
diff
changeset
|
4253 |
|
b5fa281dd501
21660635 root-password functionality required for defcore coverage
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5311
diff
changeset
|
4254 |
if zone.state == ZONE_STATE_RUNNING: |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
4255 |
out, err = utils.execute('/usr/sbin/zlogin', '-S', name, |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4256 |
'/usr/bin/passwd', '-p', |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4257 |
"'%s'" % sha256_crypt.encrypt(new_pass)) |
5312
b5fa281dd501
21660635 root-password functionality required for defcore coverage
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5311
diff
changeset
|
4258 |
else: |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
4259 |
raise exception.InstanceNotRunning(instance_id=name) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4260 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4261 |
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
|
4262 |
"""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
|
4263 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4264 |
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
|
4265 |
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
|
4266 |
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
|
4267 |
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
|
4268 |
base64-encoded. |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4269 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4270 |
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
|
4271 |
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
|
4272 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4273 |
# 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
|
4274 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4275 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4276 |
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
|
4277 |
"""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
|
4278 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4279 |
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
|
4280 |
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
|
4281 |
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
|
4282 |
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
|
4283 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4284 |
:param context: security context |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4285 |
:param instance: nova.objects.instance.Instance |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4286 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4287 |
pass |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4288 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4289 |
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
|
4290 |
"""inject network info for specified instance.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4291 |
# 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
|
4292 |
pass |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4293 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4294 |
def poll_rebooting_instances(self, timeout, instances): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4295 |
"""Perform a reboot on all given 'instances'. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4296 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4297 |
Reboots the given `instances` which are longer in the rebooting state |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4298 |
than `timeout` seconds. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4299 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4300 |
:param int timeout: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4301 |
The timeout (in seconds) for considering rebooting instances |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4302 |
to be stuck. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4303 |
:param list instances: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4304 |
A list of nova.objects.instance.Instance objects that have been |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4305 |
in rebooting state longer than the configured timeout. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4306 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4307 |
:return: None |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4308 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4309 |
# 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
|
4310 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4311 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4312 |
def host_power_action(self, action): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4313 |
"""Reboots, shuts down or powers up the host. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4314 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4315 |
:param str action: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4316 |
The action the host should perform. The valid actions are: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4317 |
""startup", "shutdown" and "reboot". |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4318 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4319 |
:return: The result of the power action |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4320 |
:rtype: : str |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4321 |
""" |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4322 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4323 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4324 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4325 |
def host_maintenance_mode(self, host, mode): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4326 |
"""Start/Stop host maintenance window. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4327 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4328 |
On start, it triggers the migration of all instances to other hosts. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4329 |
Consider the combination with :func:`set_host_enabled`. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4330 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4331 |
:param str host: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4332 |
The name of the host whose maintenance mode should be changed. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4333 |
:param bool mode: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4334 |
If `True`, go into maintenance mode. If `False`, leave the |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4335 |
maintenance mode. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4336 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4337 |
:return: "on_maintenance" if switched to maintenance mode or |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4338 |
"off_maintenance" if maintenance mode got left. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4339 |
:rtype: str |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4340 |
""" |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4341 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4342 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4343 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4344 |
def set_host_enabled(self, enabled): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4345 |
"""Sets the ability of this host to accept new instances. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4346 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4347 |
:param bool enabled: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4348 |
If this is `True`, the host will accept new instances. If it is |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4349 |
`False`, the host won't accept new instances. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4350 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4351 |
:return: If the host can accept further instances, return "enabled", |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4352 |
if further instances shouldn't be scheduled to this host, |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4353 |
return "disabled". |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4354 |
:rtype: str |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4355 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4356 |
# 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
|
4357 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4358 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4359 |
def get_host_uptime(self): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4360 |
"""Returns the result of calling the Linux command `uptime` on this |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4361 |
host. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4362 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4363 |
:return: A text which contains the uptime of this host since the |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4364 |
last boot. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4365 |
:rtype: str |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4366 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4367 |
# 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
|
4368 |
return utils.execute('/usr/bin/uptime')[0] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4369 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4370 |
def plug_vifs(self, instance, network_info): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4371 |
"""Plug virtual interfaces (VIFs) into the given `instance` at |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4372 |
instance boot time. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4373 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4374 |
The counter action is :func:`unplug_vifs`. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4375 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4376 |
:param nova.objects.instance.Instance instance: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4377 |
The instance which gets VIFs plugged. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4378 |
:param nova.network.model.NetworkInfo network_info: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4379 |
The object which contains information about the VIFs to plug. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4380 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4381 |
:return: None |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4382 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4383 |
# 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
|
4384 |
pass |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4385 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4386 |
def unplug_vifs(self, instance, network_info): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4387 |
# NOTE(markus_z): 2015-08-18 |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4388 |
# The compute manager doesn't use this interface, which seems odd |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4389 |
# since the manager should be the controlling thing here. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4390 |
"""Unplug virtual interfaces (VIFs) from networks. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4391 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4392 |
The counter action is :func:`plug_vifs`. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4393 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4394 |
:param nova.objects.instance.Instance instance: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4395 |
The instance which gets VIFs unplugged. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4396 |
:param nova.network.model.NetworkInfo network_info: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4397 |
The object which contains information about the VIFs to unplug. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4398 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4399 |
:return: None |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4400 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4401 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4402 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4403 |
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
|
4404 |
"""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
|
4405 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4406 |
: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
|
4407 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4408 |
| {'kernel': kern, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4409 |
| 'idle': idle, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4410 |
| 'user': user, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4411 |
| 'iowait': wait, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4412 |
| 'frequency': freq}, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4413 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4414 |
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
|
4415 |
(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
|
4416 |
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
|
4417 |
(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
|
4418 |
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
|
4419 |
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
|
4420 |
long integers. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4421 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4422 |
""" |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4423 |
raise NotImplementedError() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4424 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4425 |
def block_stats(self, instance, disk_id): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4426 |
"""Return performance counters associated with the given disk_id on the |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4427 |
given instance. These are returned as [rd_req, rd_bytes, wr_req, |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4428 |
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
|
4429 |
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
|
4430 |
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
|
4431 |
full pipeline. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4432 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4433 |
All counters are long integers. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4434 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4435 |
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
|
4436 |
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
|
4437 |
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
|
4438 |
unused. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4439 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4440 |
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
|
4441 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4442 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4443 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4444 |
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
|
4445 |
"""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
|
4446 |
return False |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4447 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4448 |
def macs_for_instance(self, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4449 |
"""What MAC addresses must this instance have? |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4450 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4451 |
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
|
4452 |
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
|
4453 |
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
|
4454 |
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
|
4455 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4456 |
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
|
4457 |
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
|
4458 |
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
|
4459 |
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
|
4460 |
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
|
4461 |
actual configuration. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4462 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4463 |
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
|
4464 |
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
|
4465 |
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
|
4466 |
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
|
4467 |
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
|
4468 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4469 |
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
|
4470 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4471 |
: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
|
4472 |
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
|
4473 |
MAC addresses'. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4474 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4475 |
return None |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4476 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4477 |
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
|
4478 |
"""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
|
4479 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4480 |
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
|
4481 |
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
|
4482 |
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
|
4483 |
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
|
4484 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4485 |
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
|
4486 |
|
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4487 |
Note that the format of the return value is specific to the Neutron |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4488 |
client API. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4489 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4490 |
: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
|
4491 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4492 |
| [{'opt_name': 'bootfile-name', |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4493 |
| '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
|
4494 |
| {'opt_name': 'server-ip-address', |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4495 |
| '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
|
4496 |
| {'opt_name': 'tftp-server', |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4497 |
| '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
|
4498 |
| ] |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4499 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4500 |
""" |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4501 |
return None |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4502 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4503 |
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
|
4504 |
"""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
|
4505 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4506 |
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
|
4507 |
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
|
4508 |
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
|
4509 |
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
|
4510 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4511 |
:param all_instances: nova.objects.instance.InstanceList |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4512 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4513 |
pass |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4514 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4515 |
def add_to_aggregate(self, context, aggregate, host, **kwargs): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4516 |
"""Add a compute host to an aggregate. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4517 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4518 |
The counter action to this is :func:`remove_from_aggregate` |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4519 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4520 |
:param nova.context.RequestContext context: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4521 |
The security context. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4522 |
:param nova.objects.aggregate.Aggregate aggregate: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4523 |
The aggregate which should add the given `host` |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4524 |
:param str host: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4525 |
The name of the host to add to the given `aggregate`. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4526 |
:param dict kwargs: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4527 |
A free-form thingy... |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4528 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4529 |
:return: None |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4530 |
""" |
3652
7e731a1b0b39
PSARC/2014/377 noVNC - A browser based VNC client
Niall Power <niall.power@oracle.com>
parents:
3521
diff
changeset
|
4531 |
# 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
|
4532 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4533 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4534 |
def remove_from_aggregate(self, context, aggregate, host, **kwargs): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4535 |
"""Remove a compute host from an aggregate. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4536 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4537 |
The counter action to this is :func:`add_to_aggregate` |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4538 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4539 |
:param nova.context.RequestContext context: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4540 |
The security context. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4541 |
:param nova.objects.aggregate.Aggregate aggregate: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4542 |
The aggregate which should remove the given `host` |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4543 |
:param str host: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4544 |
The name of the host to remove from the given `aggregate`. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4545 |
:param dict kwargs: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4546 |
A free-form thingy... |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4547 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4548 |
:return: None |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4549 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4550 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4551 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4552 |
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
|
4553 |
host, set_error=True): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4554 |
"""Undo for Resource Pools.""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4555 |
raise NotImplementedError() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4556 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4557 |
def get_volume_connector(self, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4558 |
"""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
|
4559 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4560 |
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
|
4561 |
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
|
4562 |
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
|
4563 |
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
|
4564 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4565 |
{ |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4566 |
'ip': ip, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4567 |
'initiator': initiator, |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4568 |
'wwnns': wwnns, |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4569 |
'wwpns': wwpns, |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4570 |
'host': hostname |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4571 |
} |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4572 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4573 |
""" |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4574 |
connector = { |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4575 |
'ip': self.get_host_ip_addr(), |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4576 |
'host': CONF.host |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4577 |
} |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4578 |
if not self._initiator: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4579 |
self._initiator = self._get_iscsi_initiator() |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4580 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4581 |
if self._initiator: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4582 |
connector['initiator'] = self._initiator |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4583 |
else: |
6913
473a2401e764
24400482 VM fails to launch if network/iscsi/initiator is disabled
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6912
diff
changeset
|
4584 |
LOG.debug(_("Could not determine iSCSI initiator name"), |
473a2401e764
24400482 VM fails to launch if network/iscsi/initiator is disabled
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
6912
diff
changeset
|
4585 |
instance=instance) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4586 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4587 |
if not self._fc_wwnns: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4588 |
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
|
4589 |
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
|
4590 |
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
|
4591 |
'World Wide Node Names'), |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4592 |
instance=instance) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4593 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4594 |
if not self._fc_wwpns: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4595 |
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
|
4596 |
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
|
4597 |
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
|
4598 |
'World Wide Port Names'), |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4599 |
instance=instance) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4600 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4601 |
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
|
4602 |
connector["wwnns"] = self._fc_wwnns |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4603 |
connector["wwpns"] = self._fc_wwpns |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4604 |
return connector |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4605 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4606 |
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
|
4607 |
"""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
|
4608 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4609 |
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
|
4610 |
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
|
4611 |
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
|
4612 |
[hypervisor_hostname]. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4613 |
""" |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4614 |
if refresh or not self._host_stats: |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4615 |
self._update_host_stats() |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4616 |
stats = self._host_stats |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4617 |
if not isinstance(stats, list): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4618 |
stats = [stats] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4619 |
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
|
4620 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4621 |
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
|
4622 |
"""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
|
4623 |
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
|
4624 |
return True |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4625 |
# Refresh and check again. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4626 |
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
|
4627 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4628 |
def get_per_instance_usage(self): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4629 |
"""Get information about instance resource usage. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4630 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4631 |
: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
|
4632 |
""" |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4633 |
return {} |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4634 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4635 |
def instance_on_disk(self, instance): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4636 |
"""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
|
4637 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4638 |
: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
|
4639 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4640 |
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
|
4641 |
the host, False otherwise. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4642 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4643 |
.. note:: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4644 |
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
|
4645 |
of access to instance shared disk files |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4646 |
""" |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4647 |
bdmobj = objects.BlockDeviceMappingList |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4648 |
bdms = bdmobj.get_by_instance_uuid(nova_context.get_admin_context(), |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4649 |
instance['uuid']) |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4650 |
|
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
4651 |
root_ci = None |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4652 |
rootmp = instance['root_device_name'] |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
4653 |
for entry in bdms: |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4654 |
if entry['connection_info'] is None: |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4655 |
continue |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4656 |
|
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4657 |
if entry['device_name'] == rootmp: |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4658 |
root_ci = jsonutils.loads(entry['connection_info']) |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4659 |
break |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4660 |
|
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4661 |
if root_ci is None: |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
4662 |
msg = (_("Unable to find the root device for instance '%s'.") |
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
4663 |
% instance['name']) |
5311
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4664 |
raise exception.NovaException(msg) |
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4665 |
|
92a194d827f0
20739272 Nova driver should support evacuation
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5279
diff
changeset
|
4666 |
driver_type = root_ci['driver_volume_type'] |
5313
17713196eb0c
22464594 Nova driver should support rebuild
Sean Wilcox <sean.wilcox@oracle.com>
parents:
5312
diff
changeset
|
4667 |
return driver_type in shared_storage |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4668 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4669 |
def register_event_listener(self, callback): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4670 |
"""Register a callback to receive events. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4671 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4672 |
Register a callback to receive asynchronous event |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4673 |
notifications from hypervisors. The callback will |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4674 |
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
|
4675 |
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
|
4676 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4677 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4678 |
self._compute_event_callback = callback |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4679 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4680 |
def emit_event(self, event): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4681 |
"""Dispatches an event to the compute manager. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4682 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4683 |
Invokes the event callback registered by the |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4684 |
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
|
4685 |
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
|
4686 |
""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4687 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4688 |
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
|
4689 |
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
|
4690 |
return |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4691 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4692 |
if not isinstance(event, virtevent.Event): |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4693 |
raise ValueError( |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4694 |
_("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
|
4695 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4696 |
try: |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4697 |
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
|
4698 |
self._compute_event_callback(event) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4699 |
except Exception as ex: |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4700 |
LOG.error(_LE("Exception dispatching event %(event)s: %(ex)s"), |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4701 |
{'event': event, 'ex': ex}) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4702 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4703 |
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
|
4704 |
"""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
|
4705 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4706 |
: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
|
4707 |
: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
|
4708 |
""" |
4982
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
4709 |
# 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
|
4710 |
# 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
|
4711 |
# the code here. |
5194
e5ea1fd7704a
22074872 nova leaks volumes if _create_config throws an exception
david.comay@oracle.com
parents:
5193
diff
changeset
|
4712 |
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
|
4713 |
try: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
4714 |
self.destroy(None, instance, None) |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
4715 |
except Exception: |
df1be607c345
18595100 nova resize does not work
Sean Wilcox <sean.wilcox@oracle.com>
parents:
4832
diff
changeset
|
4716 |
return False |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4717 |
return True |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4718 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4719 |
@property |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4720 |
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
|
4721 |
"""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
|
4722 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4723 |
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
|
4724 |
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
|
4725 |
""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4726 |
return True |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4727 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4728 |
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
|
4729 |
create_info): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4730 |
"""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
|
4731 |
|
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4732 |
The counter action to this is :func:`volume_snapshot_delete` |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4733 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4734 |
:param nova.context.RequestContext context: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4735 |
The security context. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4736 |
:param nova.objects.instance.Instance instance: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4737 |
The instance that has the volume attached |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4738 |
:param uuid volume_id: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4739 |
Volume to be snapshotted |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4740 |
: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
|
4741 |
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
|
4742 |
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
|
4743 |
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
|
4744 |
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
|
4745 |
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
|
4746 |
needed for creating the snapshot. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4747 |
""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4748 |
raise NotImplementedError() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4749 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4750 |
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
|
4751 |
snapshot_id, delete_info): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4752 |
"""Deletes a snapshot of a volume attached to a specified instance. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4753 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4754 |
The counter action to this is :func:`volume_snapshot_create` |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4755 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4756 |
:param nova.context.RequestContext context: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4757 |
The security context. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4758 |
:param nova.objects.instance.Instance instance: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4759 |
The instance that has the volume attached. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4760 |
:param uuid volume_id: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4761 |
Attached volume associated with the snapshot |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4762 |
:param uuid snapshot_id: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4763 |
The snapshot to delete. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4764 |
:param dict delete_info: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4765 |
Volume backend technology specific data needed to be able to |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4766 |
complete the snapshot. For example, in the case of qcow2 backed |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4767 |
snapshots, this would include the file being merged, and the file |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4768 |
being merged into (if appropriate). |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4769 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4770 |
:return: None |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4771 |
""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4772 |
raise NotImplementedError() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4773 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4774 |
def default_root_device_name(self, instance, image_meta, root_bdm): |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4775 |
"""Provide a default root device name for the driver. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4776 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4777 |
:param nova.objects.instance.Instance instance: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4778 |
The instance to get the root device for. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4779 |
:param nova.objects.ImageMeta image_meta: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4780 |
The metadata of the image of the instance. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4781 |
:param nova.objects.BlockDeviceMapping root_bdm: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4782 |
The description of the root device. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4783 |
""" |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4784 |
raise NotImplementedError() |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4785 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4786 |
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
|
4787 |
*block_device_lists): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1908
diff
changeset
|
4788 |
"""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
|
4789 |
raise NotImplementedError() |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4790 |
|
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4791 |
def get_device_name_for_instance(self, instance, |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4792 |
bdms, block_device_obj): |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4793 |
"""Get the next device name based on the block device mapping. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4794 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4795 |
:param instance: nova.objects.instance.Instance that volume is |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4796 |
requesting a device name |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4797 |
:param bdms: a nova.objects.BlockDeviceMappingList for the instance |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4798 |
:param block_device_obj: A nova.objects.BlockDeviceMapping instance |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4799 |
with all info about the requested block |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4800 |
device. device_name does not need to be set, |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4801 |
and should be decided by the driver |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4802 |
implementation if not set. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4803 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4804 |
:returns: The chosen device name. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4805 |
""" |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4806 |
raise NotImplementedError() |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4807 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4808 |
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
|
4809 |
"""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
|
4810 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4811 |
: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
|
4812 |
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
|
4813 |
""" |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4814 |
# 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
|
4815 |
# 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
|
4816 |
# 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
|
4817 |
# virt layer. |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3652
diff
changeset
|
4818 |
return False |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4819 |
|
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4820 |
def quiesce(self, context, instance, image_meta): |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4821 |
"""Quiesce the specified instance to prepare for snapshots. |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4822 |
|
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4823 |
If the specified instance doesn't support quiescing, |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4824 |
InstanceQuiesceNotSupported is raised. When it fails to quiesce by |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4825 |
other errors (e.g. agent timeout), NovaException is raised. |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4826 |
|
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4827 |
:param context: request context |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4828 |
:param instance: nova.objects.instance.Instance to be quiesced |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4829 |
:param nova.objects.ImageMeta image_meta: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4830 |
The metadata of the image of the instance. |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4831 |
""" |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4832 |
raise NotImplementedError() |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4833 |
|
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4834 |
def unquiesce(self, context, instance, image_meta): |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4835 |
"""Unquiesce the specified instance after snapshots. |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4836 |
|
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4837 |
If the specified instance doesn't support quiescing, |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4838 |
InstanceQuiesceNotSupported is raised. When it fails to quiesce by |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4839 |
other errors (e.g. agent timeout), NovaException is raised. |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4840 |
|
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4841 |
:param context: request context |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4842 |
:param instance: nova.objects.instance.Instance to be unquiesced |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4843 |
:param nova.objects.ImageMeta image_meta: |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4844 |
The metadata of the image of the instance. |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4845 |
""" |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5313
diff
changeset
|
4846 |
raise NotImplementedError() |
6854
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4847 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4848 |
def network_binding_host_id(self, context, instance): |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4849 |
"""Get host ID to associate with network ports. |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4850 |
|
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4851 |
:param context: request context |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4852 |
:param instance: nova.objects.instance.Instance that the network |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4853 |
ports will be associated with |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4854 |
:returns: a string representing the host ID |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4855 |
""" |
52081f923019
24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents:
6458
diff
changeset
|
4856 |
return instance.get('host') |