author | Matt Keenan <matt.keenan@oracle.com> |
Tue, 30 Jun 2015 17:10:26 +0100 | |
changeset 4567 | 921fa080154a |
parent 4460 | e5811789e2fb |
child 4586 | fb450945adf7 |
permissions | -rw-r--r-- |
4460
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1 |
# vim: tabstop=4 shiftwidth=4 softtabstop=4 |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2 |
# |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
3 |
# Copyright 2012 Hewlett-Packard Development Company, L.P. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
4 |
# Copyright (c) 2012 NTT DOCOMO, INC. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
5 |
# Copyright 2014 International Business Machines Corporation |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
6 |
# All Rights Reserved. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
7 |
# |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
8 |
# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
9 |
# |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
10 |
# Licensed under the Apache License, Version 2.0 (the "License"); you may |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
11 |
# not use this file except in compliance with the License. You may obtain |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
12 |
# a copy of the License at |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
13 |
# |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
14 |
# http://www.apache.org/licenses/LICENSE-2.0 |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
15 |
# |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
16 |
# Unless required by applicable law or agreed to in writing, software |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
17 |
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
18 |
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
19 |
# License for the specific language governing permissions and limitations |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
20 |
# under the License. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
21 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
22 |
Solaris Driver and supporting meta-classes. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
23 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
24 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
25 |
import os |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
26 |
import platform |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
27 |
import re |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
28 |
import select |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
29 |
import shutil |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
30 |
import socket |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
31 |
from subprocess import Popen, PIPE |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
32 |
import tempfile |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
33 |
from threading import Thread |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
34 |
import time |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
35 |
import urllib2 |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
36 |
from urlparse import urlparse |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
37 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
38 |
from lockfile import LockFile, LockTimeout |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
39 |
from oslo.config import cfg |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
40 |
from pkg.fmri import is_valid_pkg_name |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
41 |
from pkg.misc import valid_pub_prefix, valid_pub_url |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
42 |
from scp import SCPClient |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
43 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
44 |
from ironic.common import boot_devices, exception, images, keystone, states, \ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
45 |
utils |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
46 |
from ironic.common.i18n import _, _LW |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
47 |
from ironic.conductor import task_manager |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
48 |
from ironic.conductor import utils as manager_utils |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
49 |
from ironic.db import api as dbapi |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
50 |
from ironic.drivers import base |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
51 |
from ironic.drivers.modules import ipmitool |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
52 |
from ironic.drivers import utils as driver_utils |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
53 |
from ironic.openstack.common import log as logging |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
54 |
from ironic.openstack.common import loopingcall, processutils |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
55 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
56 |
PLATFORM = platform.system() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
57 |
if PLATFORM != "SunOS": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
58 |
import tarfile |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
59 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
60 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
61 |
AI_OPTS = [ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
62 |
cfg.StrOpt('server', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
63 |
default='None', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
64 |
help='Host name for AI Server.'), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
65 |
cfg.StrOpt('username', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
66 |
default='None', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
67 |
help='Username to ssh to AI Server.'), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
68 |
cfg.StrOpt('password', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
69 |
default='None', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
70 |
help='Password for user to ssh to AI Server.'), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
71 |
cfg.StrOpt('port', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
72 |
default='22', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
73 |
help='SSH port to use.'), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
74 |
cfg.StrOpt('timeout', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
75 |
default='10', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
76 |
help='SSH socket timeout value in seconds.'), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
77 |
cfg.StrOpt('deploy_interval', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
78 |
default='10', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
79 |
help='Interval in seconds to check AI deployment status.'), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
80 |
cfg.StrOpt('derived_manifest', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
81 |
default='file:///usr/lib/ironic/ironic-manifest.ksh', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
82 |
help='Derived Manifest used for deployment.'), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
83 |
cfg.StrOpt('ssh_key_file', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
84 |
default='None', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
85 |
help='SSH Filename to use.'), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
86 |
cfg.StrOpt('ssh_key_contents', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
87 |
default='None', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
88 |
help='Actual SSH Key contents to use.') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
89 |
] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
90 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
91 |
AUTH_OPTS = [ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
92 |
cfg.StrOpt('auth_strategy', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
93 |
default='keystone', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
94 |
help='Method to use for authentication: noauth or keystone.') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
95 |
] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
96 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
97 |
SOLARIS_IPMI_OPTS = [ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
98 |
cfg.StrOpt('imagecache_dirname', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
99 |
default='/var/lib/ironic/images', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
100 |
help='Default path to image cache.'), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
101 |
cfg.StrOpt('imagecache_lock_timeout', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
102 |
default='60', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
103 |
help='Timeout to wait when attempting to lock refcount file.') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
104 |
] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
105 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
106 |
LOG = logging.getLogger(__name__) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
107 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
108 |
CONF = cfg.CONF |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
109 |
OPT_GROUP = cfg.OptGroup(name='ai', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
110 |
title='Options for the Automated Install driver') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
111 |
CONF.register_group(OPT_GROUP) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
112 |
CONF.register_opts(AI_OPTS, OPT_GROUP) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
113 |
CONF.register_opts(AUTH_OPTS) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
114 |
SOLARIS_IPMI_GROUP = cfg.OptGroup( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
115 |
name="solaris_ipmi", |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
116 |
title="Options defined in ironic.drivers.modules.solaris_ipmi") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
117 |
CONF.register_group(SOLARIS_IPMI_GROUP) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
118 |
CONF.register_opts(SOLARIS_IPMI_OPTS, SOLARIS_IPMI_GROUP) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
119 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
120 |
VALID_ARCH = ['x86', 'SPARC'] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
121 |
VALID_ARCHIVE_SCHEMES = ["file", "http", "https", "glance"] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
122 |
VALID_URI_SCHEMES = VALID_ARCHIVE_SCHEMES |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
123 |
DEFAULT_ARCHIVE_IMAGE_PATH = 'auto_install/manifest/default_archive.xml' |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
124 |
AI_STRING = "Automated Installation" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
125 |
AI_SUCCESS_STRING = AI_STRING + " succeeded" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
126 |
AI_FAILURE_STRING = AI_STRING + " failed" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
127 |
AI_DEPLOY_STRING = AI_STRING + " started" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
128 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
129 |
REQUIRED_PROPERTIES = { |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
130 |
'ipmi_address': _("IP address or hostname of the node. Required."), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
131 |
'ipmi_username': _("username to use for IPMI connection. Required."), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
132 |
'ipmi_password': _("password to use for IPMI connection. Required.") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
133 |
} |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
134 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
135 |
OPTIONAL_PROPERTIES = { |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
136 |
'ai_manifest': _("Automated install manifest to be used for provisioning. " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
137 |
"Optional."), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
138 |
'ai_service': _("Automated Install service name to use. Optional."), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
139 |
'archive_uri': _("URI of archive to deploy. Optional."), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
140 |
'fmri': _("List of IPS package FMRIs to be installed. " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
141 |
"Required if publishers property is set."), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
142 |
'install_profiles': _("List of configuration profiles to be applied " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
143 |
"to the installation environment during an install. " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
144 |
"Optional."), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
145 |
'ipmi_bridging': _("bridging_type; default is \"no\". One of \"single\", " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
146 |
"\"dual\", \"no\". Optional."), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
147 |
'ipmi_local_address': _("local IPMB address for bridged requests. " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
148 |
"Used only if ipmi_bridging is set " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
149 |
"to \"single\" or \"dual\". Optional."), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
150 |
'ipmi_priv_level': |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
151 |
_("privilege level; default is ADMINISTRATOR. " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
152 |
"One of %s. Optional.") % '. '.join(ipmitool.VALID_PRIV_LEVELS), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
153 |
'ipmi_target_address': _("destination address for bridged request. " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
154 |
"Required only if ipmi_bridging is set " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
155 |
"to \"single\" or \"dual\"."), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
156 |
'ipmi_target_channel': _("destination channel for bridged request. " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
157 |
"Required only if ipmi_bridging is set to " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
158 |
"\"single\" or \"dual\"."), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
159 |
'ipmi_transit_address': _("transit address for bridged request. Required " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
160 |
"only if ipmi_bridging is set to \"dual\"."), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
161 |
'ipmi_transit_channel': _("transit channel for bridged request. Required " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
162 |
"only if ipmi_bridging is set to \"dual\"."), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
163 |
'publishers': _("List of IPS publishers to install from, in the format " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
164 |
"name@origin. Required if fmri property is set."), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
165 |
'sc_profiles': _("List of system configuration profiles to be applied " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
166 |
"to an installed system. Optional.") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
167 |
} |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
168 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
169 |
COMMON_PROPERTIES = REQUIRED_PROPERTIES.copy() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
170 |
COMMON_PROPERTIES.update(OPTIONAL_PROPERTIES) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
171 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
172 |
LAST_CMD_TIME = {} |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
173 |
TIMING_SUPPORT = None |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
174 |
SINGLE_BRIDGE_SUPPORT = None |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
175 |
DUAL_BRIDGE_SUPPORT = None |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
176 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
177 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
178 |
def _ssh_execute(ssh_obj, ssh_cmd, raise_exception=True, err_msg=None): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
179 |
"""Execute a command via SSH. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
180 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
181 |
:param ssh_obj: paramiko.SSHClient, an active ssh connection |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
182 |
:param ssh_cmd: Command to execute over SSH. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
183 |
:param raise_exception: Wheter to raise exception or not |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
184 |
:param err_msg: Custom error message to use |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
185 |
:returns: tuple [stdout from command, returncode] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
186 |
:raises: SSHCommandFailed on an error from ssh, if specified to raise. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
187 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
188 |
LOG.debug("_ssh_execute():ssh_cmd: %s" % (ssh_cmd)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
189 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
190 |
returncode = 0 |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
191 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
192 |
stdout = processutils.ssh_execute(ssh_obj, ssh_cmd)[0] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
193 |
except Exception as err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
194 |
LOG.debug(_("Cannot execute SSH cmd %(cmd)s. Reason: %(err)s.") % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
195 |
{'cmd': ssh_cmd, 'err': err}) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
196 |
returncode = 1 |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
197 |
if raise_exception: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
198 |
if err_msg: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
199 |
raise SolarisIPMIError(msg=err_msg) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
200 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
201 |
raise exception.SSHCommandFailed(cmd=ssh_cmd) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
202 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
203 |
return stdout, returncode |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
204 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
205 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
206 |
def _parse_driver_info(node): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
207 |
"""Gets the parameters required for ipmitool to access the node. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
208 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
209 |
Copied from ironic/drivers/modules/ipmitool.py. No differences. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
210 |
Copied locally as REQUIRED_PROPERTIES differs from standard ipmitool. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
211 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
212 |
:param node: the Node of interest. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
213 |
:returns: dictionary of parameters. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
214 |
:raises: InvalidParameterValue when an invalid value is specified |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
215 |
:raises: MissingParameterValue when a required ipmi parameter is missing. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
216 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
217 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
218 |
LOG.debug("_parse_driver_info()") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
219 |
info = node.driver_info or {} |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
220 |
bridging_types = ['single', 'dual'] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
221 |
missing_info = [key for key in REQUIRED_PROPERTIES if not info.get(key)] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
222 |
if missing_info: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
223 |
raise exception.MissingParameterValue( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
224 |
_("The following IPMI credentials are not supplied" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
225 |
" to IPMI driver: %s.") % missing_info) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
226 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
227 |
address = info.get('ipmi_address') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
228 |
username = info.get('ipmi_username') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
229 |
password = info.get('ipmi_password') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
230 |
port = info.get('ipmi_terminal_port') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
231 |
priv_level = info.get('ipmi_priv_level', 'ADMINISTRATOR') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
232 |
bridging_type = info.get('ipmi_bridging', 'no') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
233 |
local_address = info.get('ipmi_local_address') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
234 |
transit_channel = info.get('ipmi_transit_channel') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
235 |
transit_address = info.get('ipmi_transit_address') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
236 |
target_channel = info.get('ipmi_target_channel') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
237 |
target_address = info.get('ipmi_target_address') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
238 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
239 |
if port: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
240 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
241 |
port = int(port) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
242 |
except ValueError: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
243 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
244 |
"IPMI terminal port is not an integer.")) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
245 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
246 |
# check if ipmi_bridging has proper value |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
247 |
if bridging_type == 'no': |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
248 |
# if bridging is not selected, then set all bridging params to None |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
249 |
local_address = transit_channel = transit_address = \ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
250 |
target_channel = target_address = None |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
251 |
elif bridging_type in bridging_types: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
252 |
# check if the particular bridging option is supported on host |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
253 |
if not ipmitool._is_option_supported('%s_bridge' % bridging_type): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
254 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
255 |
"Value for ipmi_bridging is provided as %s, but IPMI " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
256 |
"bridging is not supported by the IPMI utility installed " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
257 |
"on host. Ensure ipmitool version is > 1.8.11" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
258 |
) % bridging_type) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
259 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
260 |
# ensure that all the required parameters are provided |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
261 |
params_undefined = [param for param, value in [ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
262 |
("ipmi_target_channel", target_channel), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
263 |
('ipmi_target_address', target_address)] if value is None] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
264 |
if bridging_type == 'dual': |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
265 |
params_undefined2 = [param for param, value in [ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
266 |
("ipmi_transit_channel", transit_channel), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
267 |
('ipmi_transit_address', transit_address) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
268 |
] if value is None] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
269 |
params_undefined.extend(params_undefined2) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
270 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
271 |
# if single bridging was selected, set dual bridge params to None |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
272 |
transit_channel = transit_address = None |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
273 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
274 |
# If the required parameters were not provided, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
275 |
# raise an exception |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
276 |
if params_undefined: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
277 |
raise exception.MissingParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
278 |
"%(param)s not provided") % {'param': params_undefined}) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
279 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
280 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
281 |
"Invalid value for ipmi_bridging: %(bridging_type)s," |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
282 |
" the valid value can be one of: %(bridging_types)s" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
283 |
) % {'bridging_type': bridging_type, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
284 |
'bridging_types': bridging_types + ['no']}) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
285 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
286 |
if priv_level not in ipmitool.VALID_PRIV_LEVELS: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
287 |
valid_priv_lvls = ', '.join(ipmitool.VALID_PRIV_LEVELS) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
288 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
289 |
"Invalid privilege level value:%(priv_level)s, the valid value" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
290 |
" can be one of %(valid_levels)s") % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
291 |
{'priv_level': priv_level, 'valid_levels': valid_priv_lvls}) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
292 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
293 |
return { |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
294 |
'address': address, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
295 |
'username': username, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
296 |
'password': password, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
297 |
'port': port, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
298 |
'uuid': node.uuid, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
299 |
'priv_level': priv_level, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
300 |
'local_address': local_address, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
301 |
'transit_channel': transit_channel, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
302 |
'transit_address': transit_address, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
303 |
'target_channel': target_channel, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
304 |
'target_address': target_address |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
305 |
} |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
306 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
307 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
308 |
def _exec_ipmitool(driver_info, command): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
309 |
"""Execute the ipmitool command. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
310 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
311 |
This uses the lanplus interface to communicate with the BMC device driver. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
312 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
313 |
Copied from ironic/drivers/modules/ipmitool.py. Only one difference. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
314 |
ipmitool.py version expects a string of space separated commands, and |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
315 |
it splits this into an list using 'space' as delimiter. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
316 |
This causes setting of bootmode script for SPARC network boot to fail. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
317 |
Solaris versions takes a list() as command paramater, and therefore |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
318 |
we don't need to split. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
319 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
320 |
:param driver_info: the ipmitool parameters for accessing a node. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
321 |
:param command: list() : the ipmitool command to be executed. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
322 |
:returns: (stdout, stderr) from executing the command. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
323 |
:raises: PasswordFileFailedToCreate from creating or writing to the |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
324 |
temporary file. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
325 |
:raises: processutils.ProcessExecutionError from executing the command. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
326 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
327 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
328 |
LOG.debug("SolarisDeploy._exec_ipmitool:driver_info: '%s', " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
329 |
"command: '%s'" % (driver_info, command)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
330 |
args = ['/usr/sbin/ipmitool', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
331 |
'-I', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
332 |
'lanplus', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
333 |
'-H', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
334 |
driver_info['address'], |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
335 |
'-L', driver_info.get('priv_level') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
336 |
] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
337 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
338 |
if driver_info['username']: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
339 |
args.append('-U') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
340 |
args.append(driver_info['username']) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
341 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
342 |
for name, option in ipmitool.BRIDGING_OPTIONS: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
343 |
if driver_info[name] is not None: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
344 |
args.append(option) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
345 |
args.append(driver_info[name]) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
346 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
347 |
# specify retry timing more precisely, if supported |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
348 |
if ipmitool._is_option_supported('timing'): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
349 |
num_tries = max( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
350 |
(CONF.ipmi.retry_timeout // CONF.ipmi.min_command_interval), 1) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
351 |
args.append('-R') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
352 |
args.append(str(num_tries)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
353 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
354 |
args.append('-N') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
355 |
args.append(str(CONF.ipmi.min_command_interval)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
356 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
357 |
# 'ipmitool' command will prompt password if there is no '-f' option, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
358 |
# we set it to '\0' to write a password file to support empty password |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
359 |
with ipmitool._make_password_file(driver_info['password'] or '\0') \ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
360 |
as pw_file: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
361 |
args.append('-f') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
362 |
args.append(pw_file) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
363 |
args = args + list(command) # Append as a list don't split(" ") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
364 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
365 |
# NOTE(deva): ensure that no communications are sent to a BMC more |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
366 |
# often than once every min_command_interval seconds. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
367 |
time_till_next_poll = CONF.ipmi.min_command_interval - ( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
368 |
time.time() - LAST_CMD_TIME.get(driver_info['address'], 0)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
369 |
if time_till_next_poll > 0: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
370 |
time.sleep(time_till_next_poll) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
371 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
372 |
out, err = utils.execute(*args) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
373 |
finally: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
374 |
LAST_CMD_TIME[driver_info['address']] = time.time() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
375 |
return out, err |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
376 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
377 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
378 |
def _get_node_architecture(node): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
379 |
"""Queries the node for architecture type |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
380 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
381 |
:param node: the Node of interest. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
382 |
:returns: SPARC or X86 depending on architecture discovered |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
383 |
:raises: IPMIFailure if ipmitool command fails |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
384 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
385 |
LOG.debug("SolarisDeploy._get_node_architecture") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
386 |
ipmi_cmd_args = ['sunoem', 'getval', '/System/Processors/architecture'] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
387 |
driver_info = _parse_driver_info(node) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
388 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
389 |
out, _err = _exec_ipmitool(driver_info, ipmi_cmd_args) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
390 |
except Exception: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
391 |
raise exception.IPMIFailure(cmd=ipmi_cmd_args) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
392 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
393 |
LOG.debug("SolarisDeploy._get_node_architecture: arch: '%s'" % (out)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
394 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
395 |
if 'SPARC' in out: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
396 |
return 'SPARC' |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
397 |
elif 'x86' in out: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
398 |
return 'x86' |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
399 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
400 |
raise SolarisIPMIError(msg="Unknown node architecture: %s" % (out)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
401 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
402 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
403 |
def _check_deploy_state(task, node_uuid, deploy_thread): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
404 |
""" Check deployment state of a running install |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
405 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
406 |
Check the deployment status for this node ideally this will be |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
407 |
achieved via communicating with the AI Server and querying the |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
408 |
telemetry data returned by the AI Client install to the AI Server. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
409 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
410 |
However until that is integrated we need to maintain a connection |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
411 |
with the Serial Console of the node being installed and parse the |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
412 |
output to the console made during an install. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
413 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
414 |
:param task: a TaskManager instance. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
415 |
:param deploy_thread: Threaded class monitor deployment status |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
416 |
:returns: Nothing, raises loopingcall.LoopingCallDone() once |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
417 |
node deployment status is determined as done or failed. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
418 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
419 |
LOG.debug("_check_deploy_state()") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
420 |
LOG.debug("_check_deploy_state() deploy_thread_state: %s" % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
421 |
(deploy_thread.state)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
422 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
423 |
# Get DB instance |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
424 |
mydbapi = dbapi.get_instance() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
425 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
426 |
# Get current DB copy of node |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
427 |
cur_node = mydbapi.get_node_by_uuid(node_uuid) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
428 |
except exception.NodeNotFound: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
429 |
LOG.info(_("During check_deploy_state, node %(node)s was not " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
430 |
"found and presumed deleted by another process.") % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
431 |
{'node': node_uuid}) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
432 |
# Thread should have stopped already, but let's make sure. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
433 |
deploy_thread.stop() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
434 |
if deploy_thread.state in [states.DEPLOYING, states.DEPLOYWAIT]: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
435 |
# Update node with done/fail state |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
436 |
if task.node: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
437 |
task.node.provision_state = states.DEPLOYFAIL |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
438 |
task.node.last_error = "Failed to find node." |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
439 |
task.node.target_provision_state = states.NOSTATE |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
440 |
task.node.save() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
441 |
raise loopingcall.LoopingCallDone() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
442 |
except Exception as err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
443 |
LOG.info(_("During check_deploy_state, node %(node)s could " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
444 |
"not be retrieved: %(err)") % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
445 |
{'node': node_uuid, 'err': err}) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
446 |
# Thread should have stopped already, but lets make sure. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
447 |
deploy_thread.stop() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
448 |
if deploy_thread.state in [states.DEPLOYING, states.DEPLOYWAIT]: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
449 |
# Update node with done/fail state |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
450 |
if task.node: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
451 |
task.node.last_error = "Failed to find node." |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
452 |
task.node.provision_state = states.DEPLOYFAIL |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
453 |
task.node.target_provision_state = states.NOSTATE |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
454 |
task.node.save() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
455 |
raise loopingcall.LoopingCallDone() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
456 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
457 |
LOG.debug("_check_deploy_state().cur_node.target_provision_state: %s" % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
458 |
(cur_node.target_provision_state)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
459 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
460 |
if deploy_thread.state not in [states.DEPLOYING, states.DEPLOYWAIT]: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
461 |
LOG.debug("_check_deploy_state().done: %s" % (deploy_thread.state)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
462 |
# Node has completed deployment, success or failure |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
463 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
464 |
# Thread should have stopped already, but lets make sure. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
465 |
deploy_thread.stop() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
466 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
467 |
# Update node with done/fail state |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
468 |
if deploy_thread.state == states.DEPLOYDONE: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
469 |
cur_node.provision_state = states.ACTIVE |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
470 |
elif deploy_thread.state == states.DEPLOYFAIL: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
471 |
cur_node.last_error = "Install failed; check install.log for " + \ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
472 |
"more details." |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
473 |
cur_node.provision_state = deploy_thread.state |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
474 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
475 |
cur_node.provision_state = deploy_thread.state |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
476 |
cur_node.target_provision_state = states.NOSTATE |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
477 |
cur_node.save() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
478 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
479 |
# Raise LoopincCallDone to terminate deployment checking. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
480 |
raise loopingcall.LoopingCallDone() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
481 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
482 |
elif deploy_thread.state == states.DEPLOYING and \ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
483 |
cur_node.provision_state != states.DEPLOYING: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
484 |
# Actual node deployment has initiated |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
485 |
LOG.debug("_check_deploy_state().deploying: %s" % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
486 |
(deploy_thread.state)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
487 |
cur_node.provision_state = states.DEPLOYING |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
488 |
cur_node.save() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
489 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
490 |
elif cur_node.target_provision_state == states.NOSTATE: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
491 |
# Node was most likely deleted so end deployment completion checking |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
492 |
LOG.debug("_check_deploy_state().deleted: %s" % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
493 |
(cur_node.target_provision_state)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
494 |
deploy_thread.stop() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
495 |
raise loopingcall.LoopingCallDone() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
496 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
497 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
498 |
def _url_exists(url): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
499 |
"""Validate specific exists |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
500 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
501 |
:param url: HTTP url |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
502 |
:returns: boolean, True of exists, otherwise False |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
503 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
504 |
LOG.debug("_url_exists: url: %s" % (url.strip())) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
505 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
506 |
_open_url = urllib2.urlopen(urllib2.Request(url)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
507 |
return True |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
508 |
except Exception as err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
509 |
LOG.debug(_("URL %s not reachable: %s") % (url, err)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
510 |
return False |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
511 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
512 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
513 |
def _image_refcount_acquire_lock(image_path): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
514 |
"""Acquire a lock on reference count image file |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
515 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
516 |
:param image_path: Path to image file |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
517 |
:returns: Acquired LockFile lock |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
518 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
519 |
LOG.debug("_image_refcount_acquire_lock: image_path: %s" % (image_path)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
520 |
ref_filename = image_path + ".ref" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
521 |
lock = LockFile(ref_filename) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
522 |
while not lock.i_am_locking(): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
523 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
524 |
if os.path.exists(image_path): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
525 |
image_size_1 = os.path.getsize(image_path) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
526 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
527 |
image_size_1 = 0 |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
528 |
lock.acquire( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
529 |
timeout=int(CONF.solaris_ipmi.imagecache_lock_timeout)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
530 |
except LockTimeout: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
531 |
# Check if image_path size has changed, due to still downloading |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
532 |
if os.path.exists(image_path): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
533 |
image_size_2 = os.path.getsize(image_path) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
534 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
535 |
image_size_2 = 0 |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
536 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
537 |
if image_size_1 != image_size_2: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
538 |
LOG.debug("_image_refcount_acquire_lock: Image downloading...") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
539 |
continue |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
540 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
541 |
# Assume lock is an old one, force it's removal |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
542 |
LOG.debug("_image_refcount_acquire_lock: Breaking stale lock.") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
543 |
lock.break_lock() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
544 |
lock.acquire() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
545 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
546 |
return lock |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
547 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
548 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
549 |
def _image_refcount_adjust(image_path, count, release=True): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
550 |
"""Adjust cached image file reference counter |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
551 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
552 |
:param image_path: Path to image file |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
553 |
:param count: Integer count value to adjust reference by |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
554 |
:param release: Release the acquired lock or return it. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
555 |
:returns: Acquired lock |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
556 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
557 |
LOG.debug("_image_refcount_adjust: image_path: %s, " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
558 |
"count: %s" % (image_path, str(count))) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
559 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
560 |
if count == 0: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
561 |
# Adjusting by zero makes no sense just return |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
562 |
err_msg = _("Zero reference count adjustment attempted " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
563 |
"on file: %s") % (image_path) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
564 |
LOG.error(err_msg) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
565 |
raise SolarisIPMIError(msg=err_msg) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
566 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
567 |
ref_filename = image_path + ".ref" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
568 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
569 |
if not os.path.exists(ref_filename): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
570 |
if count < 0: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
571 |
# Cannot decrement reference on non-existent file |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
572 |
err_msg = _("Negative reference count adjustment attempted on " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
573 |
"non-existent file: %s") % (image_path) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
574 |
LOG.error(err_msg) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
575 |
raise SolarisIPMIError(msg=err_msg) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
576 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
577 |
# Create reference count file |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
578 |
with open(ref_filename, "w") as fp: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
579 |
fp.write("0") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
580 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
581 |
# Acquire lock on refcount file |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
582 |
lock = _image_refcount_acquire_lock(image_path) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
583 |
if lock is None: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
584 |
err_msg = _("Failed to acquire lock on image: %s") % (image_path) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
585 |
LOG.error(err_msg) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
586 |
raise SolarisIPMIError(msg=err_msg) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
587 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
588 |
with open(ref_filename, "r+") as fp: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
589 |
ref_count = fp.readline() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
590 |
if len(ref_count) == 0: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
591 |
ref_count = 1 |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
592 |
ref_count = str(int(ref_count) + count) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
593 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
594 |
# Check if reference count is zero if so remove |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
595 |
# refcount file and image file |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
596 |
if int(ref_count) <= 0: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
597 |
lock.release() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
598 |
os.remove(ref_filename) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
599 |
os.remove(image_path) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
600 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
601 |
fp.seek(0) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
602 |
fp.write(ref_count) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
603 |
if release: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
604 |
lock.release() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
605 |
return lock |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
606 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
607 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
608 |
def _fetch_uri(task, uri): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
609 |
"""Retrieve the specified URI to local temporary file |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
610 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
611 |
Removal of locally fetched file is the responsibility of the |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
612 |
caller. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
613 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
614 |
:param task: a TaskManager instance |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
615 |
:param uri: URI of file to fetch. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
616 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
617 |
LOG.debug("SolarisDeploy._fetch_uri:uri: '%s'" % (uri)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
618 |
url = urlparse(uri) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
619 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
620 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
621 |
if url.scheme == "glance": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
622 |
temp_uri = os.path.join(CONF.solaris_ipmi.imagecache_dirname, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
623 |
url.netloc) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
624 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
625 |
# Check of image already in cache, retrieve if not |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
626 |
if not os.path.isfile(temp_uri): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
627 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
628 |
# Increment reference, creates refcount file and returns |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
629 |
# the acquired lock. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
630 |
lock = _image_refcount_adjust(temp_uri, 1, release=False) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
631 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
632 |
# Fetch URI from Glance into local file. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
633 |
images.fetch(task.context, url.netloc, temp_uri) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
634 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
635 |
# Release acquired lock now that file is retrieved |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
636 |
lock.release() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
637 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
638 |
except Exception as err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
639 |
LOG.error(_("Unable to fetch Glance image: id %s: %s") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
640 |
% (url.netloc, err)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
641 |
raise |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
642 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
643 |
# Increase reference count for this image |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
644 |
_image_refcount_adjust(temp_uri, 1) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
645 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
646 |
else: # http/file scheme handled directly by curl |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
647 |
if PLATFORM == "SunOS": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
648 |
_fd, temp_uri = tempfile.mkstemp( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
649 |
dir=CONF.solaris_ipmi.imagecache_dirname) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
650 |
cmd = ["/usr/bin/curl", "-sS", "-o", temp_uri, uri] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
651 |
pc = Popen(cmd, stdout=PIPE, stderr=PIPE) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
652 |
_stdout, err = pc.communicate() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
653 |
if pc.returncode != 0: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
654 |
err_msg = _("Failed to retrieve image: %s") % err |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
655 |
raise SolarisIPMIError(msg=err_msg) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
656 |
else: # Linux compat |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
657 |
temp_uri = os.path.join(CONF.solaris_ipmi.imagecache_dirname, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
658 |
url.path.replace("/", "")) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
659 |
if not os.path.isfile(temp_uri): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
660 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
661 |
# Increment reference, creates refcount file and |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
662 |
# returns the acquired lock. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
663 |
lock = _image_refcount_adjust(temp_uri, 1, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
664 |
release=False) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
665 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
666 |
# Actually fetch the image |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
667 |
cmd = ["/usr/bin/curl", "-sS", "-o", temp_uri, uri] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
668 |
pc = Popen(cmd, stdout=PIPE, stderr=PIPE) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
669 |
_stdout, err = pc.communicate() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
670 |
if pc.returncode != 0: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
671 |
err_msg = _("Failed to retrieve image: %s") % err |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
672 |
raise SolarisIPMIError(msg=err_msg) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
673 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
674 |
# Release acquired lock now that file is retrieved |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
675 |
lock.release() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
676 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
677 |
except Exception as err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
678 |
LOG.error(_("Unable to fetch image: id %s: %s") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
679 |
% (url.netloc, err)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
680 |
raise |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
681 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
682 |
# Increase reference count for this image |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
683 |
_image_refcount_adjust(temp_uri, 1) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
684 |
except Exception as err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
685 |
# Only remove the temporary file if exception occurs |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
686 |
# as noted above Caller is responsible for its removal |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
687 |
LOG.error(_("Unable to fetch image: uri %s: %s") % (uri, err)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
688 |
if url.scheme == "glance": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
689 |
_image_refcount_adjust(temp_uri, -1) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
690 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
691 |
os.remove(temp_uri) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
692 |
raise |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
693 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
694 |
return temp_uri |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
695 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
696 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
697 |
def _get_archive_iso_and_uuid(mount_dir, extract_iso=False): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
698 |
"""Get ISO name and UUID |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
699 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
700 |
Retrieved from mounted archive if on Solaris |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
701 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
702 |
On non-Solaris systems we cannot mount a UAR so we need to parse the |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
703 |
contents of the unified archive and extract ISO and UUID from |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
704 |
cached UAR. In this scenario the caller is responsible for removing |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
705 |
the extracted file. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
706 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
707 |
:param mount_dir: Location of locally mounted UAR or locally cached UAR |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
708 |
:param extract_iso: Whether to extract ISO file to temp file |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
709 |
:returns: Extracted ISO location and UUID |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
710 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
711 |
LOG.debug("SolarisDeploy._get_archive_iso_and_uuid:mount_dir: '%s'" % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
712 |
(mount_dir)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
713 |
uuid = None |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
714 |
iso = None |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
715 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
716 |
if PLATFORM == "SunOS": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
717 |
ovf_dir = os.path.join(mount_dir, "OVF") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
718 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
719 |
for uar_file in os.listdir(ovf_dir): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
720 |
if uar_file.endswith('.ovf'): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
721 |
uuid = uar_file.split('.ovf')[0] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
722 |
elif uar_file.endswith('.iso'): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
723 |
iso = os.path.join(ovf_dir, uar_file) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
724 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
725 |
tf = tarfile.open(name=mount_dir) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
726 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
727 |
for ti in tf.getmembers(): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
728 |
if ti.path.endswith('.ovf'): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
729 |
uuid = ti.path.split('.ovf')[0] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
730 |
elif ti.path.endswith('.iso') and extract_iso: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
731 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
732 |
temp_tar_dir = tempfile.mkdtemp( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
733 |
dir=CONF.solaris_ipmi.imagecache_dirname) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
734 |
tf.extractall(path=temp_tar_dir, members=[ti]) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
735 |
iso = os.path.join(temp_tar_dir, ti.path) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
736 |
except: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
737 |
# Remove temp_tar_dir and contents |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
738 |
shutil.rmtree(temp_tar_dir) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
739 |
raise |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
740 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
741 |
return iso, uuid |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
742 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
743 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
744 |
def _mount_archive(task, archive_uri): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
745 |
"""Mount a unified archive |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
746 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
747 |
:param archive_uri: URI of unified archive to mount |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
748 |
:returns: Path to mounted unified archive |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
749 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
750 |
LOG.debug("SolarisDeploy._mount_archive:archive_uri: '%s'" % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
751 |
(archive_uri)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
752 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
753 |
if urlparse(archive_uri).scheme == "glance": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
754 |
# TODO(mattk): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
755 |
# Ideally mounting the http ISO directly is preferred. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
756 |
# However mount(1M), does not support auth_token |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
757 |
# thus we must fetch the image locally and then mount the |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
758 |
# local image. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
759 |
# Tried putting a proxy in place to intercept the mount(1M) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
760 |
# http request and adding an auth_token as it proceeds. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
761 |
# However mount(1M) launches a new SMF instance for each HTTP |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
762 |
# mount request, and each SMF instance has a minimal environment |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
763 |
# set, which does not include http_proxy, thus the custom local |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
764 |
# proxy never gets invoked. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
765 |
# Would love to have a new mount(1M) option to accept either |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
766 |
# a proxy e.g. -o proxy=<proxy> or to accept setting of http headers |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
767 |
# e.g. -o http_header="X-Auth-Token: askdalksjdlakjsd" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
768 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
769 |
# Retrieve UAR to local temp file for mounting |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
770 |
temp_uar = _fetch_uri(task, archive_uri) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
771 |
archive_mount = temp_uar |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
772 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
773 |
# Can mount archive directly |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
774 |
temp_uar = None |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
775 |
archive_mount = archive_uri |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
776 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
777 |
mount_dir = tempfile.mkdtemp(dir=CONF.solaris_ipmi.imagecache_dirname) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
778 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
779 |
cmd = ["/usr/sbin/mount", "-F", "uvfs", "-o", |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
780 |
"archive=%s" % (archive_mount), "/usr/lib/fs/uafs/uafs", mount_dir] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
781 |
LOG.debug("SolarisDeploy._mount_archive:cmd: '%s'" % (cmd)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
782 |
pc = Popen(cmd, stdout=PIPE, stderr=PIPE) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
783 |
_stdout, err = pc.communicate() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
784 |
if pc.returncode != 0: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
785 |
err_msg = _("Failed to mount UAR %s: %s") % (archive_uri, err) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
786 |
shutil.rmtree(mount_dir) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
787 |
raise SolarisIPMIError(msg=err_msg) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
788 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
789 |
return mount_dir, temp_uar |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
790 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
791 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
792 |
def _umount_archive(mount_dir, temp_uar): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
793 |
""" Unmount archive and remove mount point directory |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
794 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
795 |
:param mount_dir: Path to mounted archive |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
796 |
:param temp_uar: Path to glance local uar to remove |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
797 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
798 |
LOG.debug("SolarisDeploy._umount_archive:mount_dir: '%s', temp_uar: %s" % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
799 |
(mount_dir, temp_uar)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
800 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
801 |
cmd = ["/usr/sbin/umount", mount_dir] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
802 |
pc = Popen(cmd, stdout=PIPE, stderr=PIPE) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
803 |
_stdout, err = pc.communicate() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
804 |
if pc.returncode != 0: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
805 |
err_msg = _("Failed to unmount UAR %s: %s") % (mount_dir, err) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
806 |
raise SolarisIPMIError(msg=err_msg) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
807 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
808 |
shutil.rmtree(mount_dir) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
809 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
810 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
811 |
def _get_archive_uuid(task): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
812 |
"""Get the UUID of an archive |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
813 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
814 |
:param task: a TaskManager instance |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
815 |
:returns: UUID string for an archive otherwise raise exception |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
816 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
817 |
LOG.debug("SolarisDeploy._get_archive_uuid") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
818 |
uuid = None |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
819 |
archive_uri = task.node.driver_info['archive_uri'] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
820 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
821 |
if PLATFORM == "SunOS": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
822 |
mount_dir, temp_uar = _mount_archive(task, archive_uri) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
823 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
824 |
_iso, uuid = _get_archive_iso_and_uuid(mount_dir) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
825 |
except: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
826 |
_umount_archive(mount_dir, temp_uar) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
827 |
raise |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
828 |
_umount_archive(mount_dir, temp_uar) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
829 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
830 |
temp_uar = _fetch_uri(task, archive_uri) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
831 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
832 |
_iso, uuid = _get_archive_iso_and_uuid(temp_uar) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
833 |
except: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
834 |
_image_refcount_adjust(temp_uar, -1) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
835 |
raise |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
836 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
837 |
if uuid is None: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
838 |
err_msg = _("Failed to extract UUID from UAR: %s") % archive_uri |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
839 |
if PLATFORM != "SunOS": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
840 |
_image_refcount_adjust(temp_uar, -1) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
841 |
raise SolarisIPMIError(msg=err_msg) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
842 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
843 |
LOG.debug("SolarisDeploy._get_archive_uuid: uuid: %s" % (uuid)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
844 |
return uuid |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
845 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
846 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
847 |
def _validate_archive_uri(task): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
848 |
"""Validate archive_uri for reachable, format, etc |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
849 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
850 |
:param task: a TaskManager instance. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
851 |
:raises: InvalidParameterValie if invalid archive_uri |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
852 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
853 |
LOG.debug("SolarisDeploy._validate_archive_uri") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
854 |
archive_uri = task.node.driver_info['archive_uri'] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
855 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
856 |
url = urlparse(archive_uri) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
857 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
858 |
if url.scheme not in VALID_ARCHIVE_SCHEMES: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
859 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
860 |
"Unsupported archive scheme (%s) referenced in archive_uri (%s).") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
861 |
% (url.scheme, archive_uri)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
862 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
863 |
if not url.netloc and not url.path: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
864 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
865 |
"Missing archive name in archive_uri (%s).") % (archive_uri)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
866 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
867 |
if url.scheme == "glance": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
868 |
# Glance schema only supported if using keystone authorization |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
869 |
# otherwise ironic being used standalone |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
870 |
if CONF.auth_strategy != "keystone": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
871 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
872 |
"Glance scheme only supported when using Keystone (%s).") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
873 |
% (archive_uri)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
874 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
875 |
# Format : glance://<glance UUID> |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
876 |
# When parsed by urlparse, Glance image uuid appears as netloc param |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
877 |
if not url.netloc: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
878 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
879 |
"Missing Glance image UUID archive_uri (%s).") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
880 |
% (archive_uri)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
881 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
882 |
# Validate glance image exists by attempting to get download size |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
883 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
884 |
size = images.download_size(task.context, url.netloc) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
885 |
LOG.debug("Image %s size: %s" % (url.netloc, str(size))) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
886 |
if not size: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
887 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
888 |
"Glance image not found: %s") % (url.netloc)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
889 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
890 |
except Exception as err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
891 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
892 |
"Failed to validate Glance image '%s': %s") % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
893 |
(url.netloc, err)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
894 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
895 |
elif url.scheme in ["http", "https"]: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
896 |
# Presuming client authentication using HTTPS is not being used. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
897 |
# Just a secure connection. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
898 |
# TODO(mattk): Do I need to support client side HTTPS authentication |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
899 |
if not _url_exists(archive_uri): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
900 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
901 |
"archive_uri does not exist (%s).") % (archive_uri)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
902 |
elif url.scheme == "file": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
903 |
file_path = os.path.join(os.sep, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
904 |
url.netloc.strip(os.sep), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
905 |
url.path.strip(os.sep)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
906 |
if not os.path.isfile(file_path): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
907 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
908 |
"archive_uri does not exist (%s).") % (archive_uri)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
909 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
910 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
911 |
def _format_archive_uri(task, archive_uri): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
912 |
"""Format archive URL to be passed as boot argument to AI client |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
913 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
914 |
Transformation of archive_uri is only required if URI scheme is glance. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
915 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
916 |
:param task: a TaskManager instance. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
917 |
:param archive_uri: URI path to unified archive |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
918 |
:returns: Formatted archive URI, and auth_token if needed |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
919 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
920 |
LOG.debug("SolarisDeploy._format_archive_uri: archive_uri: %s" % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
921 |
(archive_uri)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
922 |
if archive_uri: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
923 |
url = urlparse(archive_uri) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
924 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
925 |
if url.scheme == "glance": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
926 |
# Transform uri from glance://<UUID> to |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
927 |
# direct glance URL glance://<GLANCE_REST_API>/<UUID> |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
928 |
new_uri = "http://%s:%s/v2/images/%s/file" % \ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
929 |
(CONF.glance.glance_host, CONF.glance.glance_port, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
930 |
url.netloc) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
931 |
auth_token = task.context.auth_token |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
932 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
933 |
new_uri = archive_uri |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
934 |
auth_token = None |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
935 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
936 |
new_uri = None |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
937 |
auth_token = None |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
938 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
939 |
return new_uri, auth_token |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
940 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
941 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
942 |
def _validate_ai_manifest(task): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
943 |
"""Validate ai_manifest for format, etc |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
944 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
945 |
driver_info/ai_manifest is used to specify a path to a single |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
946 |
AI manifest to be used instead of the default derived script. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
947 |
e.g. http://path-to-manifest |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
948 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
949 |
:param task: a TaskManager instance. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
950 |
:raises: InvalidParameterValue if invalid ai_manifest |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
951 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
952 |
LOG.debug("SolarisDeploy._validate_ai_manifest") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
953 |
ai_manifest = task.node.driver_info['ai_manifest'] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
954 |
_validate_uri(task, ai_manifest) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
955 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
956 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
957 |
def _validate_profiles(task, profiles): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
958 |
"""Validate profiles for format, etc |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
959 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
960 |
Configuration profiles are specified as a plus(+) delimited list of paths |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
961 |
e.g. http://path-to-profile+http://path-to-another-profile |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
962 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
963 |
:param task: a TaskManager instance. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
964 |
:param profiles: Plus(+) delimited list of configuration profile |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
965 |
:raises: InvalidParameterValue if invalid configuration profile |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
966 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
967 |
LOG.debug("SolarisDeploy._validate_profiles: %s" % (profiles)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
968 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
969 |
# Split profiles into list of paths@environment elements |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
970 |
prof_list = [prof.strip() for prof in profiles.split('+') if prof.strip()] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
971 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
972 |
for profile in prof_list: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
973 |
_validate_uri(task, profile) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
974 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
975 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
976 |
def _validate_uri(task, uri): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
977 |
"""Validate URI for AI Manifest or SC Profile |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
978 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
979 |
:param task: a TaskManager instance. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
980 |
:param uri: URI to AI Manifest or SC profile |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
981 |
:raises: InvalidParameterValue if invalid manifest/profile URI |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
982 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
983 |
LOG.debug("SolarisDeploy._validate_uri: URI: %s" % (uri)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
984 |
url = urlparse(uri) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
985 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
986 |
if url.scheme not in VALID_URI_SCHEMES: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
987 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
988 |
"Unsupported uri scheme (%s) referenced" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
989 |
" in URI (%s).") % (url.scheme, uri)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
990 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
991 |
if not url.netloc and not url.path: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
992 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
993 |
"Missing URI name (%s).") % (uri)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
994 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
995 |
if url.scheme in ["http", "https"]: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
996 |
# Presuming client authentication using HTTPS is not being used. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
997 |
# Just a secure connection. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
998 |
# TODO(mattk): Do I need to support client side HTTPS authentication |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
999 |
if not _url_exists(uri): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1000 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1001 |
"URI does not exist (%s).") % (uri)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1002 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1003 |
LOG.debug("SolarisDeploy._validate_uri: %s exists." % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1004 |
(uri)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1005 |
elif url.scheme == "file": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1006 |
file_path = os.path.join(os.sep, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1007 |
url.netloc.strip(os.sep), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1008 |
url.path.strip(os.sep)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1009 |
if not os.path.isfile(file_path): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1010 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1011 |
"URI does not exist (%s).") % (uri)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1012 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1013 |
LOG.debug("SolarisDeploy._validate_uri: %s exists." % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1014 |
(url.scheme)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1015 |
elif url.scheme == "glance": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1016 |
# Glance schema only supported if using keystone authorization |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1017 |
# otherwise ironic being used standalone |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1018 |
if CONF.auth_strategy != "keystone": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1019 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1020 |
"Glance scheme only supported when using Keystone (%s).") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1021 |
% (uri)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1022 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1023 |
# Format : glance://<glance UUID> |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1024 |
# When parsed by urlparse, Glance image uuid appears as netloc param |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1025 |
if not url.netloc: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1026 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1027 |
"Missing Glance image UUID for URI (%s).") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1028 |
% (uri)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1029 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1030 |
# Validate glance uri exists by attempting to get download size |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1031 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1032 |
size = images.download_size(task.context, url.netloc) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1033 |
LOG.debug("Image %s size: %s" % (url.netloc, str(size))) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1034 |
if not size: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1035 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1036 |
"Glance image not found: %s") % (url.netloc)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1037 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1038 |
LOG.debug("SolarisDeploy._validate_uri: %s exists." % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1039 |
(uri)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1040 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1041 |
except Exception as err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1042 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1043 |
"Failed to validate Glance URI '%s': %s") % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1044 |
(url.netloc, err)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1045 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1046 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1047 |
def _validate_fmri(task): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1048 |
"""Validate fmri for format, etc |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1049 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1050 |
driver_info/fmri is a plus(+) delimited list of IPS package |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1051 |
FMRIs to be installed. e.g. pkg:/pkg1+pkg:/pkg2 |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1052 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1053 |
:param task: a TaskManager instance. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1054 |
:raises: InvalidParameterValue if invalid fmri |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1055 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1056 |
LOG.debug("SolarisDeploy._validate_fmri") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1057 |
fmri = task.node.driver_info['fmri'] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1058 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1059 |
# Split fmri into list of possible packages |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1060 |
pkg_list = [pkg.strip() for pkg in fmri.split('+') if pkg.strip()] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1061 |
for fmri in pkg_list: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1062 |
_validate_fmri_format(fmri) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1063 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1064 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1065 |
def _validate_fmri_format(fmri): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1066 |
"""Validate FMRI for format |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1067 |
FMRI must not contain the publisher and must be of the format: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1068 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1069 |
pkg:/<package path> |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1070 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1071 |
Note the fmri only contains a single backslash. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1072 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1073 |
:param fmri: IPS FMRI |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1074 |
:raises: InvalidParameterValue if invalid FMRI |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1075 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1076 |
LOG.debug("SolarisDeploy._validate_fmri_format: fmri: %s" % (fmri)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1077 |
url = urlparse(fmri) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1078 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1079 |
if url.scheme != "pkg": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1080 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1081 |
"Unsupported IPS scheme (%s) referenced in fmri (%s).") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1082 |
% (url.scheme, fmri)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1083 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1084 |
if url.netloc: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1085 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1086 |
"Cannot specify publisher name in fmri (%s).") % (fmri)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1087 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1088 |
if not url.path: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1089 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1090 |
"Missing IPS package name in fmri (%s).") % (fmri)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1091 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1092 |
# Validate package name |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1093 |
if not is_valid_pkg_name(url.path.strip("/")): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1094 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1095 |
"Malformed IPS package name in fmri (%s).") % (fmri)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1096 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1097 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1098 |
def _validate_publishers(task): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1099 |
"""Validate custom publisher name/origins for format |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1100 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1101 |
publishers property is a plus(+) delimited list of IPS publishers |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1102 |
to be installed from, in the format name@origin. e.g. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1103 |
solaris@http://pkg.oracle.com/solaris+extra@http://int.co.com/extras |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1104 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1105 |
:param task: a TaskManager instance. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1106 |
:raises: InvalidParameterValue if invalid publisher |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1107 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1108 |
LOG.debug("SolarisDeploy._validate_publishers") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1109 |
pubs = task.node.driver_info['publishers'] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1110 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1111 |
# Split publishers into list of name@origin publishers |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1112 |
pub_list = [pub.strip() for pub in pubs.split('+') if pub.strip()] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1113 |
for pub in pub_list: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1114 |
# Split into name origin |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1115 |
name, origin = pub.split('@', 1) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1116 |
if not name or not origin: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1117 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1118 |
"Malformed IPS publisher must be of format " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1119 |
"name@origin (%s).") % (pub)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1120 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1121 |
if not valid_pub_prefix(name): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1122 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1123 |
"Malformed IPS publisher name (%s).") % (name)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1124 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1125 |
if not valid_pub_url(origin): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1126 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1127 |
"Malformed IPS publisher origin (%s).") % (origin)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1128 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1129 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1130 |
def _fetch_and_create(task, obj_type, obj_name, obj_uri, aiservice, mac, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1131 |
env=None): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1132 |
"""Fetch manifest/profile and create on AI Server |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1133 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1134 |
:param task: a TaskManager instance. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1135 |
:param obj_type: Type of AI object to create "manifest" or "profile" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1136 |
:param obj_name: manifest/profile name |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1137 |
:param obj_uri: URI to manifest/profile to use |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1138 |
:param aiservice: AI Service to create manifest/profile for |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1139 |
:param mac: MAC address criteria to use |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1140 |
:param env: Environment to apply profile to |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1141 |
:raises: AICreateProfileFail or AICreateManifestFail |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1142 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1143 |
# Fetch URI to local file |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1144 |
url = urlparse(obj_uri) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1145 |
temp_file = _fetch_uri(task, obj_uri) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1146 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1147 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1148 |
# scp temp file to AI Server |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1149 |
remote_file = os.path.join("/tmp", obj_name) + ".xml" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1150 |
aiservice.copy_remote_file(temp_file, remote_file) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1151 |
except Exception as err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1152 |
LOG.error(_("Fetch and create failed for %s: name: %s: %s") % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1153 |
(obj_type, obj_uri, err)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1154 |
if url.scheme == "glance": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1155 |
_image_refcount_adjust(temp_file, -1) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1156 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1157 |
os.remove(temp_file) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1158 |
raise |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1159 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1160 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1161 |
if obj_type == "manifest": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1162 |
# Create AI Profile |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1163 |
aiservice.create_manifest(obj_name, remote_file, mac) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1164 |
elif obj_type == "profile": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1165 |
# Create AI Profile |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1166 |
aiservice.create_profile(obj_name, remote_file, mac, env) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1167 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1168 |
except (AICreateManifestFail, AICreateProfileFail) as _err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1169 |
aiservice.delete_remote_file(remote_file) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1170 |
if url.scheme == "glance": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1171 |
_image_refcount_adjust(temp_file, -1) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1172 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1173 |
os.remove(temp_file) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1174 |
raise |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1175 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1176 |
# Remove local and remote temporary profiles |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1177 |
aiservice.delete_remote_file(remote_file) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1178 |
if url.scheme == "glance": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1179 |
_image_refcount_adjust(temp_file, -1) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1180 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1181 |
os.remove(temp_file) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1182 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1183 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1184 |
class DeployStateChecker(Thread): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1185 |
"""Thread class to check for deployment completion""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1186 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1187 |
def __init__(self, task): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1188 |
"""Init method for thread class""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1189 |
LOG.debug("DeployStateChecker.__init__()") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1190 |
Thread.__init__(self) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1191 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1192 |
self.task = task |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1193 |
self.node = task.node |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1194 |
self._state = states.DEPLOYWAIT |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1195 |
self.ssh_connection = None |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1196 |
self.running = True |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1197 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1198 |
@property |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1199 |
def state(self): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1200 |
"""Deployment state property""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1201 |
return self._state |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1202 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1203 |
def run(self): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1204 |
"""Start the thread """ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1205 |
LOG.debug("DeployStateChecker.run(): Connecting...") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1206 |
client = utils.ssh_connect(self._get_ssh_dict()) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1207 |
channel = client.invoke_shell() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1208 |
channel.settimeout(0.0) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1209 |
channel.set_combine_stderr(True) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1210 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1211 |
# Continuously read stdout from console and parse |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1212 |
# specifically for success/failure output |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1213 |
while self.running: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1214 |
with tempfile.TemporaryFile(dir='/var/lib/ironic') as tf: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1215 |
while True: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1216 |
rchans, _wchans, _echans = select.select([channel], [], []) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1217 |
if channel in rchans: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1218 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1219 |
console_data = "" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1220 |
while channel.recv_ready(): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1221 |
console_data += channel.recv(1024) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1222 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1223 |
if len(console_data) == 0: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1224 |
tf.write("\n*** EOF\n") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1225 |
# Confirm string to search for on success |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1226 |
if self._string_in_file(tf, AI_SUCCESS_STRING): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1227 |
self._state = states.DEPLOYDONE |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1228 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1229 |
# Didn't succeed so default to failure |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1230 |
self._state = states.DEPLOYFAIL |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1231 |
self.stop() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1232 |
break |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1233 |
tf.write(console_data) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1234 |
tf.flush() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1235 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1236 |
# Read input buffer for prompt |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1237 |
if re.search("->", console_data): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1238 |
# Send console start command |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1239 |
channel.send("start -script SP/Console\n") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1240 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1241 |
# Cater for Yes/No prompts always sending Yes |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1242 |
elif re.search("y/n", console_data): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1243 |
channel.send("y\n") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1244 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1245 |
# Confirm string to search for on success |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1246 |
elif self._string_in_file(tf, AI_SUCCESS_STRING): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1247 |
LOG.debug("DeployStateChecker.run(): Done") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1248 |
self._state = states.DEPLOYDONE |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1249 |
self.stop() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1250 |
break |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1251 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1252 |
# Confirm string to search for on failure |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1253 |
elif self._string_in_file(tf, AI_FAILURE_STRING): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1254 |
LOG.debug("DeployStateChecker.run(): FAIL") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1255 |
self._state = states.DEPLOYFAIL |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1256 |
self.stop() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1257 |
break |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1258 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1259 |
elif self._string_in_file(tf, AI_DEPLOY_STRING): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1260 |
LOG.debug( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1261 |
"DeployStateChecker.run(): DEPLOYING") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1262 |
self._state = states.DEPLOYING |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1263 |
except socket.timeout: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1264 |
pass |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1265 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1266 |
def stop(self): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1267 |
"""Stop the thread""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1268 |
LOG.debug("DeployStateChecker.stop()") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1269 |
self.running = False |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1270 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1271 |
def _string_in_file(self, fp, string): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1272 |
"""Read all data from file checking for string presence |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1273 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1274 |
:param fp: Open file pointer to read |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1275 |
:param string: Specific string to check for |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1276 |
:returns: boolean True of string present in file, False if not |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1277 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1278 |
found_string = False |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1279 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1280 |
# Position read at start of file |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1281 |
fp.seek(0) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1282 |
for line in fp: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1283 |
if re.search(string, line): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1284 |
found_string = True |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1285 |
break |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1286 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1287 |
# Return current read point to end of file for subsequent writes |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1288 |
fp.seek(0, 2) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1289 |
return found_string |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1290 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1291 |
def _get_ssh_dict(self): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1292 |
"""Generate SSH Dictionary for SSH Connection via paramiko |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1293 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1294 |
:returns: dictionary for paramiko connection |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1295 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1296 |
LOG.debug("DeployStateChecker._get_ssh_dict()") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1297 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1298 |
driver_info = _parse_driver_info(self.node) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1299 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1300 |
ssh_dict = { |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1301 |
'host': driver_info.get('address'), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1302 |
'username': driver_info.get('username'), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1303 |
'port': driver_info.get('port', 22) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1304 |
} |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1305 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1306 |
if ssh_dict.get('port') is not None: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1307 |
ssh_dict['port'] = int(ssh_dict.get('port')) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1308 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1309 |
del ssh_dict['port'] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1310 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1311 |
if driver_info['password']: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1312 |
ssh_dict['password'] = driver_info['password'] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1313 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1314 |
LOG.debug("DeployStateChecker._get_ssh_dict():ssh_dict: %s" % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1315 |
(ssh_dict)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1316 |
return ssh_dict |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1317 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1318 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1319 |
class SolarisDeploy(base.DeployInterface): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1320 |
"""AI Deploy Interface """ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1321 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1322 |
def get_properties(self): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1323 |
"""Return Solaris driver properties""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1324 |
return COMMON_PROPERTIES |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1325 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1326 |
def validate(self, task): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1327 |
"""Validate the driver-specific Node deployment info. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1328 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1329 |
:param task: a task from TaskManager. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1330 |
:raises: InvalidParameterValue. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1331 |
:raises: MissingParameterValue. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1332 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1333 |
LOG.debug("SolarisDeploy.validate()") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1334 |
LOG.debug(task.context.auth_token) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1335 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1336 |
# Validate IPMI credentials by getting node architecture |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1337 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1338 |
_arch = _get_node_architecture(task.node) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1339 |
except Exception as err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1340 |
raise exception.InvalidParameterValue(_(err)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1341 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1342 |
if not driver_utils.get_node_mac_addresses(task): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1343 |
raise exception.InvalidParameterValue( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1344 |
_("Node %s does not have any port associated with it.") % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1345 |
(task.node.uuid)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1346 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1347 |
# Ensure server configured |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1348 |
if not CONF.ai.server or CONF.ai.server == "None": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1349 |
raise exception.MissingParameterValue( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1350 |
_("AI Server not specified in configuration file.")) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1351 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1352 |
# Ensure username configured |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1353 |
if not CONF.ai.username or CONF.ai.username == "None": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1354 |
raise exception.MissingParameterValue( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1355 |
_("AI Server user not specified in configuration file.")) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1356 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1357 |
# One of ssh_key_file / ssh_key_contents / password must be configured |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1358 |
if ((not CONF.ai.password or CONF.ai.password == "None") and |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1359 |
(not CONF.ai.ssh_key_file or CONF.ai.ssh_key_file == "None") and |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1360 |
(not CONF.ai.ssh_key_contents or |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1361 |
CONF.ai.ssh_key_contents == "None")): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1362 |
raise exception.MissingParameterValue( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1363 |
_("AI Server authentication not specified. One of password, " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1364 |
"ssh_key_file and ssh_key_contents must be present in " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1365 |
"configuration file.")) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1366 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1367 |
# archive_uri, publishers or fmri are ignored if a ai_manifest is |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1368 |
# defined. They should be contained within the custom manifest itself |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1369 |
if (task.node.driver_info.get('ai_manifest') and |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1370 |
(task.node.driver_info.get('archive_uri') or |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1371 |
task.node.driver_info.get('publishers') or |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1372 |
task.node.driver_info.get('fmri'))): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1373 |
raise exception.InvalidParameterValue( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1374 |
_("Custom Archive, Publishers or FMRI cannot be specified " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1375 |
"when specifying a custom AI Manifest. They should be " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1376 |
"contained within this custom AI Manifest.")) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1377 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1378 |
# Ensure ai_service is valid if specified in driver |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1379 |
if task.node.driver_info.get('ai_service'): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1380 |
aiservice = AIService(task, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1381 |
task.node.driver_info.get('ai_service')) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1382 |
if not aiservice.exists: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1383 |
raise exception.InvalidParameterValue( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1384 |
_("AI Service %s does not exist.") % (aiservice.name)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1385 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1386 |
# Ensure node archive_uri is valid if specified |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1387 |
if task.node.driver_info.get('archive_uri'): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1388 |
# Validate archive_uri for reachable, format, etc |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1389 |
_validate_archive_uri(task) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1390 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1391 |
# Ensure custom publisher provided if FMRI provided |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1392 |
if task.node.driver_info.get('fmri') and \ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1393 |
not task.node.driver_info.get('publishers'): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1394 |
raise exception.MissingParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1395 |
"Must specify custom publisher with custom fmri.")) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1396 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1397 |
# Ensure node publishers are valid if specified |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1398 |
if task.node.driver_info.get('publishers'): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1399 |
# Validate publishers for format, etc |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1400 |
_validate_publishers(task) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1401 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1402 |
# Ensure node fmri is valid if specified |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1403 |
if task.node.driver_info.get('fmri'): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1404 |
# Validate fmri for format, etc |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1405 |
_validate_fmri(task) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1406 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1407 |
# Ensure node sc_profiles is valid if specified |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1408 |
if task.node.driver_info.get('sc_profiles'): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1409 |
# Validate sc_profiles for format, etc |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1410 |
_validate_profiles(task, task.node.driver_info.get('sc_profiles')) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1411 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1412 |
# Ensure node install_profiles is valid if specified |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1413 |
if task.node.driver_info.get('install_profiles'): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1414 |
# Validate install_profiles for format, etc |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1415 |
_validate_profiles(task, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1416 |
task.node.driver_info.get('install_profiles')) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1417 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1418 |
# Ensure node manifest is valid of specified |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1419 |
if task.node.driver_info.get('ai_manifest'): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1420 |
# Validate ai_manifest for format, etc |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1421 |
_validate_ai_manifest(task) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1422 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1423 |
# Try to get the URL of the Ironic API |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1424 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1425 |
CONF.conductor.api_url or keystone.get_service_url() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1426 |
except (exception.CatalogFailure, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1427 |
exception.CatalogNotFound, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1428 |
exception.CatalogUnauthorized): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1429 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1430 |
"Couldn't get the URL of the Ironic API service from the " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1431 |
"configuration file or Keystone catalog.")) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1432 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1433 |
# Validate driver_info by parsing contents |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1434 |
_parse_driver_info(task.node) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1435 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1436 |
@task_manager.require_exclusive_lock |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1437 |
def deploy(self, task): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1438 |
"""Perform start deployment a node. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1439 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1440 |
For AI Deployment of x86 machines, we simply need to set the chassis |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1441 |
boot device to pxe and reboot the physical node. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1442 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1443 |
For AI Deployment of SPARC Machines we need to supply a boot script |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1444 |
indicating to perform a network DHCP boot. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1445 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1446 |
AI Server settings for this node, e.g. client, manifest, boot args |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1447 |
etc, will have been configured via prepare() method which is called |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1448 |
before deploy(). |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1449 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1450 |
:param task: a TaskManager instance. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1451 |
:returns: deploy state DEPLOYWAIT. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1452 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1453 |
LOG.debug("SolarisDeploy.deploy()") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1454 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1455 |
arch = _get_node_architecture(task.node) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1456 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1457 |
# Ensure persistence is false so net boot only occurs once |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1458 |
if arch == 'x86': |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1459 |
# Set boot device to PXE network boot |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1460 |
dev_cmd = 'pxe' |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1461 |
elif arch == 'SPARC': |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1462 |
# Set bootmode script to network DHCP |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1463 |
dev_cmd = 'wanboot' |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1464 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1465 |
raise exception.InvalidParameterValue( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1466 |
_("Invalid node architecture of '%s'.") % (arch)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1467 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1468 |
manager_utils.node_set_boot_device(task, dev_cmd, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1469 |
persistent=False) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1470 |
manager_utils.node_power_action(task, states.REBOOT) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1471 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1472 |
deploy_thread = DeployStateChecker(task) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1473 |
deploy_thread.start() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1474 |
timer = loopingcall.FixedIntervalLoopingCall(_check_deploy_state, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1475 |
task, task.node.uuid, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1476 |
deploy_thread) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1477 |
timer.start(interval=int(CONF.ai.deploy_interval)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1478 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1479 |
return states.DEPLOYWAIT |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1480 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1481 |
@task_manager.require_exclusive_lock |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1482 |
def tear_down(self, task): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1483 |
"""Tear down a previous deployment. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1484 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1485 |
Reset boot device or bootmode script and power off the node. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1486 |
All actual clean-up is done in the clean_up() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1487 |
method which should be called separately. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1488 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1489 |
:param task: a TaskManager instance. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1490 |
:returns: deploy state DELETED. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1491 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1492 |
LOG.debug("SolarisDeploy.tear_down()") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1493 |
manager_utils.node_set_boot_device(task, 'disk', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1494 |
persistent=False) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1495 |
manager_utils.node_power_action(task, states.POWER_OFF) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1496 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1497 |
return states.DELETED |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1498 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1499 |
def prepare(self, task): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1500 |
"""Prepare the deployment environment for this node. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1501 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1502 |
1. Ensure Node's AI Service is specified and it exists |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1503 |
2. (Re)Create AI Clients for each port/Mac specified for this Node |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1504 |
3. (Re)Create AI Manifest for each port/Mac specified for this Node |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1505 |
with specific criteria of MAC address |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1506 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1507 |
AI Service to use for installation is determined from |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1508 |
driver_info properties archive_uri or ai_service. archive_uri |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1509 |
takes precedence over ai_service. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1510 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1511 |
1. archive_uri specified. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1512 |
Extract AI ISO from UAR and create a new AI service if service |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1513 |
for this ID does not exist. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1514 |
2. ai_service specified |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1515 |
AI Service must exist. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1516 |
3. archive_uri & ai_service not specified |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1517 |
Use default architecture specific service to perform IPS |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1518 |
install. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1519 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1520 |
:param task: a TaskManager instance. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1521 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1522 |
LOG.debug("SolarisDeploy.prepare()") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1523 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1524 |
ai_manifest = task.node.driver_info.get('ai_manifest', None) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1525 |
ai_service = task.node.driver_info.get('ai_service', None) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1526 |
arch = _get_node_architecture(task.node) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1527 |
archive_uri = task.node.driver_info.get('archive_uri', None) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1528 |
fmri = task.node.driver_info.get('fmri', None) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1529 |
install_profiles = task.node.driver_info.get('install_profiles', None) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1530 |
publishers = task.node.driver_info.get('publishers', None) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1531 |
sc_profiles = task.node.driver_info.get('sc_profiles', None) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1532 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1533 |
# Ensure cache dir exists |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1534 |
if not os.path.exists(CONF.solaris_ipmi.imagecache_dirname): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1535 |
os.makedirs(CONF.solaris_ipmi.imagecache_dirname) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1536 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1537 |
# archive_uri, publishers or fmri are ignored if a ai_manifest is |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1538 |
# defined. They should be contained within the custom manifest itself |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1539 |
if ((ai_manifest) and (archive_uri or publishers or fmri)): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1540 |
raise exception.InvalidParameterValue( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1541 |
_("Custom Archive, Publishers or FMRI cannot be specified " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1542 |
"when specifying a custom AI Manifest. They should be " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1543 |
"contained within this custom AI Manifest.")) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1544 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1545 |
# 1. Ensure Node's AI Service exists, if archive_uri then |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1546 |
# create a new service of UUID of archive does not already exist |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1547 |
if archive_uri: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1548 |
# Validate archive_uri, format, reachable, etc |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1549 |
_validate_archive_uri(task) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1550 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1551 |
# Extract UUID from archive UAR and instantiate AIService |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1552 |
ai_service = _get_archive_uuid(task) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1553 |
aiservice = AIService(task, ai_service) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1554 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1555 |
elif ai_service: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1556 |
# Instantiate AIService object for this node/service |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1557 |
aiservice = AIService(task, ai_service) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1558 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1559 |
# IPS Install, ensure default architecture service exists |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1560 |
if arch == "x86": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1561 |
ai_service = "default-i386" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1562 |
elif arch == 'SPARC': |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1563 |
ai_service = "default-sparc" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1564 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1565 |
raise exception.InvalidParameterValue( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1566 |
_("Invalid node architecture of '%s'.") % (arch)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1567 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1568 |
# Instantiate AIService object for this node/service |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1569 |
aiservice = AIService(task, ai_service) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1570 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1571 |
# Check if AI Service exists, raise exception of not |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1572 |
if not aiservice.exists: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1573 |
if archive_uri: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1574 |
# Create this service |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1575 |
aiservice.create_service(archive_uri) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1576 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1577 |
raise exception.InvalidParameterValue( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1578 |
_("AI Service %s does not exist.") % (aiservice.name)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1579 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1580 |
# Ensure custom publisher provided if FMRI provided |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1581 |
if fmri and not publishers: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1582 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1583 |
"Must specify custom publisher with custom fmri.")) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1584 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1585 |
# Ensure node publishers are valid if specified |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1586 |
if publishers: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1587 |
# Validate publishers for format, etc |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1588 |
_validate_publishers(task) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1589 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1590 |
# Ensure node fmri is valid if specified |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1591 |
if fmri: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1592 |
# Validate fmri, format, etc |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1593 |
_validate_fmri(task) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1594 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1595 |
# Ensure node sc_profiles is of valid format if specified |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1596 |
if sc_profiles: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1597 |
# Validate sc_profiles for format, etc |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1598 |
_validate_profiles(task, sc_profiles) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1599 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1600 |
# Ensure node install_profiles is of valid format if specified |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1601 |
if install_profiles: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1602 |
# Validate install_profiles for format, etc |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1603 |
_validate_profiles(task, install_profiles) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1604 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1605 |
# Ensure node ai_manifest is valid if specified |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1606 |
if ai_manifest: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1607 |
# Validate ai_manifest for format, etc |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1608 |
_validate_ai_manifest(task) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1609 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1610 |
for mac in driver_utils.get_node_mac_addresses(task): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1611 |
# 2. Recreate AI Clients for each port/Mac specified for this Node |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1612 |
# Check if AI Client exists for this service and if so remove it |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1613 |
if mac.lower() in aiservice.clients: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1614 |
# Client exists remove it |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1615 |
aiservice.delete_client(mac) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1616 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1617 |
# Recreate new ai client for this mac address |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1618 |
new_uri, auth_token = _format_archive_uri(task, archive_uri) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1619 |
aiservice.create_client(mac, arch, new_uri, auth_token, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1620 |
publishers, fmri) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1621 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1622 |
# 3. (Re)Create AI Manifest for each port/Mac specified for this |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1623 |
# Node. Manifest name will be MAC address stripped of colons |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1624 |
manifest_name = mac.replace(':', '') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1625 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1626 |
# Check if AI Manifest exists for this service and if so remove it |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1627 |
if manifest_name in aiservice.manifests: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1628 |
# Manifest exists remove it |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1629 |
aiservice.delete_manifest(manifest_name) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1630 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1631 |
# (Re)Create new ai Manifest for this mac address |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1632 |
# If ai_manifest is specified use it as the manifest otherwise |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1633 |
# use derived manifest script specified by aiservice. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1634 |
if ai_manifest is not None: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1635 |
# Fetch manifest locally, copy to AI Server so that |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1636 |
# installadm create-manifest CLI works. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1637 |
_fetch_and_create(task, "manifest", manifest_name, ai_manifest, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1638 |
aiservice, mac) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1639 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1640 |
_fetch_and_create(task, "manifest", manifest_name, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1641 |
aiservice.derived_manifest, aiservice, mac) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1642 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1643 |
# 4. (Re)Create AI Profiles for each port/MAC specified for this |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1644 |
# Node, adding a new profile for each SC Profile specified. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1645 |
# Profile Name will be MAC address prefix and counter suffix. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1646 |
# e.g. AAEEBBCCFF66-1 |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1647 |
profile_prefix = mac.replace(':', '') + "-" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1648 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1649 |
# Remove all profiles associated with this MAC address and service |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1650 |
for profile_name in aiservice.profiles: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1651 |
# Profile name starts with MAC address, assuming ironic |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1652 |
# created this profile so remove it. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1653 |
if profile_prefix in profile_name: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1654 |
aiservice.delete_profile(profile_name) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1655 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1656 |
# Process both sc_profiles and install_profiles filtering into |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1657 |
# unique list of profiles and environments to be applied to. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1658 |
if install_profiles is not None: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1659 |
ins_list = [prof.strip() for prof in |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1660 |
install_profiles.split('+') if prof.strip()] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1661 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1662 |
ins_list = [] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1663 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1664 |
prof_dict = dict(((uri, "install") for uri in ins_list)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1665 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1666 |
if sc_profiles is not None: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1667 |
sc_list = [prof.strip() for prof in sc_profiles.split('+') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1668 |
if prof.strip()] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1669 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1670 |
sc_list = [] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1671 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1672 |
for profile in sc_list: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1673 |
if profile in prof_dict: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1674 |
prof_dict[profile] = "all" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1675 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1676 |
prof_dict[profile] = "system" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1677 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1678 |
profile_index = 0 |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1679 |
for profile_uri, profile_env in prof_dict.iteritems(): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1680 |
profile_index += 1 |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1681 |
profile_name = profile_prefix + str(profile_index) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1682 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1683 |
# Fetch profile locally, copy to AI Server so that |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1684 |
# installadm create-profile CLI works. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1685 |
_fetch_and_create(task, "profile", profile_name, profile_uri, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1686 |
aiservice, mac, env=profile_env) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1687 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1688 |
# Ensure local copy of archive_uri is removed if not needed |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1689 |
if archive_uri: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1690 |
url = urlparse(archive_uri) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1691 |
if url.scheme == "glance": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1692 |
temp_uar = os.path.join(CONF.solaris_ipmi.imagecache_dirname, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1693 |
url.netloc) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1694 |
_image_refcount_adjust(temp_uar, -1) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1695 |
elif PLATFORM != "SunOS": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1696 |
temp_uar = os.path.join(CONF.solaris_ipmi.imagecache_dirname, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1697 |
url.path.replace("/", "")) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1698 |
_image_refcount_adjust(temp_uar, -1) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1699 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1700 |
def clean_up(self, task): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1701 |
"""Clean up the deployment environment for this node. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1702 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1703 |
As node is being torn down we need to clean up specific |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1704 |
AI Clients and Manifests associated with MAC addresses |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1705 |
associated with this node. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1706 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1707 |
1. Delete AI Clients for each port/Mac specified for this Node |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1708 |
2. Delete AI Manifest for each port/Mac specified for this Node |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1709 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1710 |
:param task: a TaskManager instance. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1711 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1712 |
LOG.debug("SolarisDeploy.clean_up()") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1713 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1714 |
ai_service = task.node.driver_info.get('ai_service', None) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1715 |
arch = _get_node_architecture(task.node) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1716 |
archive_uri = task.node.driver_info.get('archive_uri', None) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1717 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1718 |
# Instantiate AIService object for this node/service |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1719 |
if archive_uri: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1720 |
aiservice = AIService(task, _get_archive_uuid(task)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1721 |
elif ai_service: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1722 |
aiservice = AIService(task, ai_service) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1723 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1724 |
if arch == "x86": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1725 |
ai_service = "default-i386" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1726 |
elif arch == 'SPARC': |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1727 |
ai_service = "default-sparc" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1728 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1729 |
raise exception.InvalidParameterValue( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1730 |
_("Invalid node architecture of '%s'.") % (arch)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1731 |
aiservice = AIService(task, ai_service) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1732 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1733 |
# Check if AI Service exists, log message if already removed |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1734 |
if not aiservice.exists: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1735 |
# There is nothing to clean up as service removed |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1736 |
LOG.info(_("AI Service %s already removed.") % (aiservice.name)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1737 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1738 |
for mac in driver_utils.get_node_mac_addresses(task): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1739 |
# 1. Delete AI Client for this MAC Address |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1740 |
if mac.lower() in aiservice.clients: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1741 |
aiservice.delete_client(mac) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1742 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1743 |
# 2. Delete AI Manifest for this MAC Address |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1744 |
manifest_name = mac.replace(':', '') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1745 |
if manifest_name in aiservice.manifests: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1746 |
aiservice.delete_manifest(manifest_name) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1747 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1748 |
# 3. Remove AI Profiles for this MAC Address |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1749 |
profile_prefix = mac.replace(':', '') + "-" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1750 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1751 |
# Remove all profiles associated with this MAC address |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1752 |
for profile_name in aiservice.profiles: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1753 |
if profile_prefix in profile_name: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1754 |
aiservice.delete_profile(profile_name) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1755 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1756 |
# Ensure local copy of archive_uri is removed if not needed |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1757 |
if archive_uri: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1758 |
url = urlparse(archive_uri) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1759 |
if url.scheme == "glance": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1760 |
temp_uar = os.path.join(CONF.solaris_ipmi.imagecache_dirname, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1761 |
url.netloc) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1762 |
_image_refcount_adjust(temp_uar, -1) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1763 |
elif PLATFORM != "SunOS": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1764 |
temp_uar = os.path.join(CONF.solaris_ipmi.imagecache_dirname, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1765 |
url.path.replace("/", "")) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1766 |
_image_refcount_adjust(temp_uar, -1) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1767 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1768 |
def take_over(self, _task): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1769 |
"""Take over management of this task's node from a dead conductor.""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1770 |
""" TODO(mattk): Determine if this is required""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1771 |
LOG.debug("SolarisDeploy.take_over()") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1772 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1773 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1774 |
class SolarisManagement(base.ManagementInterface): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1775 |
"""Management class for solaris nodes.""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1776 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1777 |
def get_properties(self): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1778 |
"""Return Solaris driver properties""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1779 |
return COMMON_PROPERTIES |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1780 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1781 |
def __init__(self): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1782 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1783 |
ipmitool._check_option_support(['timing', 'single_bridge', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1784 |
'dual_bridge']) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1785 |
except OSError: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1786 |
raise exception.DriverLoadError( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1787 |
driver=self.__class__.__name__, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1788 |
reason=_("Unable to locate usable ipmitool command in " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1789 |
"the system path when checking ipmitool version")) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1790 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1791 |
def validate(self, task): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1792 |
"""Check that 'driver_info' contains IPMI credentials. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1793 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1794 |
Validates whether the 'driver_info' property of the supplied |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1795 |
task's node contains the required credentials information. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1796 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1797 |
:param task: a task from TaskManager. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1798 |
:raises: InvalidParameterValue if required IPMI parameters |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1799 |
are missing. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1800 |
:raises: MissingParameterValue if a required parameter is missing. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1801 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1802 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1803 |
_parse_driver_info(task.node) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1804 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1805 |
def get_supported_boot_devices(self, task=None): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1806 |
"""Get a list of the supported boot devices. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1807 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1808 |
:param task: a task from TaskManager. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1809 |
:returns: A list with the supported boot devices defined |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1810 |
in :mod:`ironic.common.boot_devices`. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1811 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1812 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1813 |
if task is None: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1814 |
return [boot_devices.PXE, boot_devices.DISK, boot_devices.CDROM, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1815 |
boot_devices.BIOS, boot_devices.SAFE] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1816 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1817 |
# Get architecture of node and return supported boot devices |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1818 |
arch = _get_node_architecture(task.node) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1819 |
if arch == 'x86': |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1820 |
return [boot_devices.PXE, boot_devices.DISK, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1821 |
boot_devices.CDROM, boot_devices.BIOS, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1822 |
boot_devices.SAFE] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1823 |
elif arch == 'SPARC': |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1824 |
return [boot_devices.DISK, 'wanboot'] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1825 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1826 |
raise exception.InvalidParameterValue( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1827 |
_("Invalid node architecture of '%s'.") % (arch)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1828 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1829 |
@task_manager.require_exclusive_lock |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1830 |
def set_boot_device(self, task, device, persistent=False): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1831 |
"""Set the boot device for the task's node. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1832 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1833 |
Set the boot device to use on next reboot of the node. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1834 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1835 |
:param task: a task from TaskManager. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1836 |
:param device: the boot device, one of |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1837 |
:mod:`ironic.common.boot_devices`. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1838 |
:param persistent: Boolean value. True if the boot device will |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1839 |
persist to all future boots, False if not. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1840 |
Default: False. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1841 |
:raises: InvalidParameterValue if an invalid boot device is specified |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1842 |
:raises: MissingParameterValue if required ipmi parameters are missing. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1843 |
:raises: IPMIFailure on an error from ipmitool. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1844 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1845 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1846 |
LOG.debug("SolarisManagement.set_boot_device: %s" % device) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1847 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1848 |
arch = _get_node_architecture(task.node) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1849 |
archive_uri = task.node.driver_info.get('archive_uri') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1850 |
publishers = task.node.driver_info.get('publishers') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1851 |
fmri = task.node.driver_info.get('fmri') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1852 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1853 |
if arch == 'x86': |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1854 |
if device not in self.get_supported_boot_devices(task=task): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1855 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1856 |
"Invalid boot device %s specified.") % device) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1857 |
cmd = ["chassis", "bootdev", device] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1858 |
if persistent: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1859 |
cmd = cmd + " options=persistent" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1860 |
elif arch == 'SPARC': |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1861 |
# Set bootmode script to network DHCP or disk |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1862 |
if device == 'wanboot': |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1863 |
boot_cmd = 'set /HOST/bootmode script="' |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1864 |
script_str = 'boot net:dhcp - install' |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1865 |
if archive_uri: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1866 |
new_uri, auth_token = _format_archive_uri(task, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1867 |
archive_uri) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1868 |
script_str += ' archive_uri=%s' % (new_uri) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1869 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1870 |
if auth_token is not None: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1871 |
# Add auth_token to boot arg, AI archive transfer will |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1872 |
# use this by setting X-Auth-Token header when using |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1873 |
# curl to retrieve archive from glance. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1874 |
script_str += ' auth_token=%s' % \ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1875 |
(task.context.auth_token) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1876 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1877 |
if publishers: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1878 |
pub_list = [pub.strip() for pub in publishers.split('+') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1879 |
if pub.strip()] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1880 |
script_str += ' publishers=%s' % ('+'.join(pub_list)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1881 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1882 |
if fmri: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1883 |
pkg_list = [pkg.strip() for pkg in fmri.split('+') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1884 |
if pkg.strip()] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1885 |
script_str += ' fmri=%s' % ('+'.join(pkg_list)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1886 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1887 |
# bootmode script property has a size restriction of 255 |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1888 |
# characters raise error if this is breached. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1889 |
if len(script_str) > 255: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1890 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1891 |
"SPARC firmware bootmode script length exceeds 255:" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1892 |
" %s") % script_str) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1893 |
boot_cmd += script_str + '"' |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1894 |
cmd = ['sunoem', 'cli', boot_cmd] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1895 |
elif device == 'disk': |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1896 |
cmd = ['sunoem', 'cli', |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1897 |
'set /HOST/bootmode script=""'] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1898 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1899 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1900 |
"Invalid boot device %s specified.") % (device)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1901 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1902 |
raise exception.InvalidParameterValue( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1903 |
_("Invalid node architecture of '%s'.") % (arch)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1904 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1905 |
driver_info = _parse_driver_info(task.node) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1906 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1907 |
_out, _err = _exec_ipmitool(driver_info, cmd) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1908 |
except (exception.PasswordFileFailedToCreate, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1909 |
processutils.ProcessExecutionError) as err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1910 |
LOG.warning(_LW('IPMI set boot device failed for node %(node)s ' |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1911 |
'when executing "ipmitool %(cmd)s". ' |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1912 |
'Error: %(error)s'), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1913 |
{'node': driver_info['uuid'], |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1914 |
'cmd': cmd, 'error': err}) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1915 |
raise exception.IPMIFailure(cmd=cmd) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1916 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1917 |
def get_boot_device(self, task): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1918 |
"""Get the current boot device for the task's node. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1919 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1920 |
Returns the current boot device of the node. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1921 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1922 |
:param task: a task from TaskManager. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1923 |
:raises: InvalidParameterValue if required IPMI parameters |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1924 |
are missing. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1925 |
:raises: IPMIFailure on an error from ipmitool. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1926 |
:raises: MissingParameterValue if a required parameter is missing. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1927 |
:returns: a dictionary containing: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1928 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1929 |
:boot_device: the boot device, one of |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1930 |
:mod:`ironic.common.boot_devices` or None if it is unknown. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1931 |
:persistent: Whether the boot device will persist to all |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1932 |
future boots or not, None if it is unknown. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1933 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1934 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1935 |
LOG.debug("SolarisManagement.get_boot_device") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1936 |
arch = _get_node_architecture(task.node) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1937 |
driver_info = _parse_driver_info(task.node) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1938 |
response = {'boot_device': None, 'persistent': None} |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1939 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1940 |
if arch == 'x86': |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1941 |
cmd = ["chassis", "bootparam", "get", "5"] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1942 |
elif arch == 'SPARC': |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1943 |
cmd = ['sunoem', 'getval', '/HOST/bootmode/script'] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1944 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1945 |
raise exception.InvalidParameterValue( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1946 |
_("Invalid node architecture of '%s'.") % (arch)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1947 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1948 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1949 |
out, _err = _exec_ipmitool(driver_info, cmd) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1950 |
except (exception.PasswordFileFailedToCreate, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1951 |
processutils.ProcessExecutionError) as err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1952 |
LOG.warning(_LW('IPMI get boot device failed for node %(node)s ' |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1953 |
'when executing "ipmitool %(cmd)s". ' |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1954 |
'Error: %(error)s'), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1955 |
{'node': driver_info['uuid'], |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1956 |
'cmd': cmd, 'error': err}) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1957 |
raise exception.IPMIFailure(cmd=cmd) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1958 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1959 |
if arch == 'x86': |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1960 |
re_obj = re.search('Boot Device Selector : (.+)?\n', out) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1961 |
if re_obj: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1962 |
boot_selector = re_obj.groups('')[0] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1963 |
if 'PXE' in boot_selector: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1964 |
response['boot_device'] = boot_devices.PXE |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1965 |
elif 'Hard-Drive' in boot_selector: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1966 |
if 'Safe-Mode' in boot_selector: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1967 |
response['boot_device'] = boot_devices.SAFE |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1968 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1969 |
response['boot_device'] = boot_devices.DISK |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1970 |
elif 'BIOS' in boot_selector: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1971 |
response['boot_device'] = boot_devices.BIOS |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1972 |
elif 'CD/DVD' in boot_selector: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1973 |
response['boot_device'] = boot_devices.CDROM |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1974 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1975 |
response['persistent'] = 'Options apply to all future boots' in out |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1976 |
elif arch == 'SPARC': |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1977 |
if "net:dhcp" in out: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1978 |
response['boot_device'] = 'wanboot' |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1979 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1980 |
response['boot_device'] = 'disk' |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1981 |
LOG.debug(response) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1982 |
return response |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1983 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1984 |
def get_sensors_data(self, task): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1985 |
"""Get sensors data. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1986 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1987 |
:param task: a TaskManager instance. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1988 |
:raises: FailedToGetSensorData when getting the sensor data fails. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1989 |
:raises: FailedToParseSensorData when parsing sensor data fails. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1990 |
:raises: InvalidParameterValue if required ipmi parameters are missing |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1991 |
:raises: MissingParameterValue if a required parameter is missing. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1992 |
:returns: returns a dict of sensor data group by sensor type. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1993 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1994 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1995 |
driver_info = _parse_driver_info(task.node) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1996 |
# with '-v' option, we can get the entire sensor data including the |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1997 |
# extended sensor informations |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1998 |
cmd = "-v sdr" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
1999 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2000 |
out, _err = _exec_ipmitool(driver_info, cmd) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2001 |
except (exception.PasswordFileFailedToCreate, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2002 |
processutils.ProcessExecutionError) as err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2003 |
raise exception.FailedToGetSensorData(node=task.node.uuid, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2004 |
error=err) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2005 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2006 |
return ipmitool._parse_ipmi_sensors_data(task.node, out) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2007 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2008 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2009 |
class AIService(): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2010 |
"""AI Service""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2011 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2012 |
def __init__(self, task, name): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2013 |
"""Initialize AIService object |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2014 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2015 |
:param task: a TaskManager instance |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2016 |
:param name: AI Service name |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2017 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2018 |
LOG.debug("AIService.__init__()") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2019 |
self.task = task |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2020 |
self.name = name |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2021 |
self._clients = list() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2022 |
self._image_path = None |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2023 |
self._manifests = list() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2024 |
self._profiles = list() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2025 |
self._ssh_obj = None |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2026 |
self._derived_manifest = None |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2027 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2028 |
@property |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2029 |
def ssh_obj(self): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2030 |
"""paramiko.SSHClient active connection""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2031 |
LOG.debug("AIService.ssh_obj") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2032 |
if self._ssh_obj is None: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2033 |
self._ssh_obj = self._get_ssh_connection() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2034 |
return self._ssh_obj |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2035 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2036 |
@property |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2037 |
def manifests(self): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2038 |
"""list() of manifest names for this service""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2039 |
LOG.debug("AIService.manifests") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2040 |
if not self._manifests: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2041 |
self._manifests = self._get_manifest_names() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2042 |
return self._manifests |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2043 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2044 |
@property |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2045 |
def profiles(self): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2046 |
"""list() of profile names for this service""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2047 |
LOG.debug("AIService.profiles") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2048 |
if not self._profiles: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2049 |
self._profiles = self._get_profile_names() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2050 |
return self._profiles |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2051 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2052 |
@property |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2053 |
def clients(self): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2054 |
"""list() of all client names(mac addresses) On AI Server""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2055 |
LOG.debug("AIService.clients") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2056 |
if not self._clients: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2057 |
self._clients = self._get_all_client_names() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2058 |
return self._clients |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2059 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2060 |
@property |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2061 |
def exists(self): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2062 |
"""True/False indicator of this service exists of not""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2063 |
LOG.debug("AIService.exists") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2064 |
ai_cmd = "/usr/bin/pfexec /usr/sbin/installadm list -n " + self.name |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2065 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2066 |
stdout, _rc = _ssh_execute(self.ssh_obj, ai_cmd) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2067 |
except Exception as _err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2068 |
return False |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2069 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2070 |
if self.name != self._parse_service_name(stdout): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2071 |
return False |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2072 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2073 |
return True |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2074 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2075 |
@property |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2076 |
def image_path(self): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2077 |
"""image_path for this service""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2078 |
LOG.debug("AIService.image_path") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2079 |
if self._image_path is None: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2080 |
self._image_path = self._get_image_path() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2081 |
return self._image_path |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2082 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2083 |
@property |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2084 |
def derived_manifest(self): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2085 |
"""Access default derived manifest URI""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2086 |
LOG.debug("AIService.derived_manifest") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2087 |
if not self._derived_manifest: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2088 |
self._derived_manifest = CONF.ai.derived_manifest |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2089 |
return self._derived_manifest |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2090 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2091 |
def create_service(self, archive_uri): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2092 |
"""Create a new AI Service for this object |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2093 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2094 |
:param archive_uri: archive_uri to create service from |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2095 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2096 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2097 |
LOG.debug("AIService.create_service(): %s" % (self.name)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2098 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2099 |
if PLATFORM == "SunOS": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2100 |
# 1. Fetch archive |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2101 |
mount_dir, temp_uar = _mount_archive(self.task, archive_uri) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2102 |
iso, uuid = _get_archive_iso_and_uuid(mount_dir) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2103 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2104 |
# 1. Fetch archive and Extract ISO file |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2105 |
temp_uar = _fetch_uri(self.task, archive_uri) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2106 |
iso, uuid = _get_archive_iso_and_uuid(temp_uar, extract_iso=True) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2107 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2108 |
# 2. scp AI ISO from archive to AI Server |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2109 |
remote_iso = os.path.join("/tmp", uuid) + ".iso" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2110 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2111 |
self.copy_remote_file(iso, remote_iso) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2112 |
except: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2113 |
if PLATFORM == "SunOS": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2114 |
_umount_archive(mount_dir, temp_uar) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2115 |
if urlparse(archive_uri).scheme == "glance": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2116 |
_image_refcount_adjust(temp_uar, -1) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2117 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2118 |
shutil.rmtree(os.path.dirname(iso)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2119 |
_image_refcount_adjust(temp_uar, -1) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2120 |
raise |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2121 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2122 |
if PLATFORM != "SunOS": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2123 |
# Remove temp extracted ISO file |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2124 |
shutil.rmtree(os.path.dirname(iso)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2125 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2126 |
# 3. Create a new AI Service |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2127 |
ai_cmd = "/usr/bin/pfexec /usr/sbin/installadm create-service " + \ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2128 |
" -y -n " + uuid + " -s " + remote_iso |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2129 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2130 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2131 |
_stdout, _rc = _ssh_execute(self.ssh_obj, ai_cmd) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2132 |
self.name = uuid |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2133 |
self._clients = [] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2134 |
self._manifests = [] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2135 |
self._profiles = [] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2136 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2137 |
except Exception as _err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2138 |
self.delete_remote_file(remote_iso) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2139 |
if PLATFORM == "SunOS": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2140 |
_umount_archive(mount_dir, temp_uar) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2141 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2142 |
_image_refcount_adjust(temp_uar, -1) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2143 |
raise AICreateServiceFail( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2144 |
_("Failed to create AI Service %s") % (uuid)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2145 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2146 |
# 4. Remove copy of AI ISO on AI Server |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2147 |
self.delete_remote_file(remote_iso) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2148 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2149 |
if PLATFORM == "SunOS": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2150 |
# 5. Unmount UAR |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2151 |
_umount_archive(mount_dir, temp_uar) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2152 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2153 |
# 6. Decrement reference count for image |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2154 |
if temp_uar is not None: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2155 |
_image_refcount_adjust(temp_uar, -1) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2156 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2157 |
def delete_service(self): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2158 |
"""Delete the current AI Service""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2159 |
LOG.debug("AIService.delete_service():name: %s" % (self.name)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2160 |
ai_cmd = "/usr/bin/pfexec /usr/sbin/installadm delete-service" + \ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2161 |
" -r -y -n " + self.name |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2162 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2163 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2164 |
_stdout, _rc = _ssh_execute(self.ssh_obj, ai_cmd) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2165 |
except Exception as _err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2166 |
raise AIDeleteServiceFail( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2167 |
_("Failed to delete AI Service %s") % (self.name)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2168 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2169 |
def create_client(self, mac, arch, archive_uri, auth_token, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2170 |
publishers, fmri): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2171 |
"""Create a client associated with this service |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2172 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2173 |
:param mac: MAC Address of client to create |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2174 |
:param arch: Machine architecture for this node |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2175 |
:param archive_uri: URI of archive to install node from |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2176 |
:param auth_token: Authorization token for glance UAR retrieval |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2177 |
:param publishers: IPS publishers list in name@origin format |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2178 |
:param fmri: IPS package FMRIs to install |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2179 |
:returns: Nothing exception raised if deletion fails |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2180 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2181 |
LOG.debug("AIService.create_client():mac: %s" % (mac)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2182 |
ai_cmd = "/usr/bin/pfexec /usr/sbin/installadm create-client -e " + \ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2183 |
mac + " -n " + self.name |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2184 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2185 |
# Add specific boot arguments for 'x86' clients only |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2186 |
if arch == 'x86': |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2187 |
ai_cmd += " -b install=true,console=ttya" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2188 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2189 |
if archive_uri: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2190 |
ai_cmd += ",archive_uri=%s" % (archive_uri) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2191 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2192 |
if auth_token: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2193 |
ai_cmd += ",auth_token=%s" % (auth_token) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2194 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2195 |
if publishers: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2196 |
pub_list = [pub.strip() for pub in publishers.split('+') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2197 |
if pub.strip()] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2198 |
ai_cmd += ",publishers='%s'" % ('+'.join(pub_list)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2199 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2200 |
if fmri: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2201 |
pkg_list = [pkg.strip() for pkg in fmri.split('+') |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2202 |
if pkg.strip()] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2203 |
ai_cmd += ",fmri='%s'" % ('+'.join(pkg_list)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2204 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2205 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2206 |
_stdout, _rc = _ssh_execute(self.ssh_obj, ai_cmd) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2207 |
except Exception as _err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2208 |
raise AICreateClientFail(_("Failed to create AI Client %s") % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2209 |
(mac)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2210 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2211 |
# If arch x86 customize grub reducing grub menu timeout to 0 |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2212 |
if arch == 'x86': |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2213 |
custom_grub = "/tmp/%s.grub" % (mac) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2214 |
ai_cmd = "/usr/bin/pfexec /usr/sbin/installadm export -e " + \ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2215 |
mac + " -G | /usr/bin/sed -e 's/timeout=30/timeout=0/'" + \ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2216 |
" > %s" % (custom_grub) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2217 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2218 |
_stdout, _rc = _ssh_execute(self.ssh_obj, ai_cmd) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2219 |
except Exception as _err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2220 |
raise AICreateClientFail( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2221 |
_("Failed to create custom grub menu for %s.") % (mac)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2222 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2223 |
ai_cmd = "/usr/bin/pfexec /usr/sbin/installadm set-client -e " + \ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2224 |
mac + " -G %s" % (custom_grub) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2225 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2226 |
_stdout, _rc = _ssh_execute(self.ssh_obj, ai_cmd) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2227 |
except Exception as _err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2228 |
raise AICreateClientFail( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2229 |
_("Failed to customize AI Client %s grub menu.") % (mac)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2230 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2231 |
self.delete_remote_file(custom_grub) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2232 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2233 |
self._clients = self._get_all_client_names() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2234 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2235 |
def delete_client(self, mac): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2236 |
"""Delete a specific client regardless of service association |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2237 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2238 |
:param mac: MAC Address of client to remove |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2239 |
:returns: Nothing exception raised if deletion fails |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2240 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2241 |
LOG.debug("AIService.delete_client():mac: %s" % (mac)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2242 |
ai_cmd = "/usr/bin/pfexec /usr/sbin/installadm delete-client -e " + mac |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2243 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2244 |
_stdout, _rc = _ssh_execute(self.ssh_obj, ai_cmd) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2245 |
except Exception as _err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2246 |
raise AIDeleteClientFail(_("Failed to delete AI Client %s") % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2247 |
(mac)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2248 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2249 |
# update list of clients for this service |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2250 |
self._clients = self._get_all_client_names() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2251 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2252 |
def create_manifest(self, manifest_name, manifest_path, mac): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2253 |
"""Create a manifest associated with this service |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2254 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2255 |
:param manifest_name: manifest_name to create |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2256 |
:param manifest_path: path to manifest file to use |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2257 |
:param mac: MAC address to add as criteria |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2258 |
:returns: Nothing exception raised if creation fails |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2259 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2260 |
LOG.debug("AIService.create_manifest():manifest_name: " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2261 |
"'%s', manifest_path: '%s', mac: '%s'" % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2262 |
(manifest_name, manifest_path, mac)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2263 |
ai_cmd = "/usr/bin/pfexec /usr/sbin/installadm create-manifest -n " + \ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2264 |
self.name + " -m " + manifest_name + " -f " + manifest_path + \ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2265 |
" -c mac=" + mac |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2266 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2267 |
_stdout, _rc = _ssh_execute(self.ssh_obj, ai_cmd) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2268 |
except Exception as _err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2269 |
raise AICreateManifestFail(_("Failed to create AI Manifest %s.") % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2270 |
(manifest_name)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2271 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2272 |
# Update list of manifests for this service |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2273 |
self._manifests = self._get_manifest_names() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2274 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2275 |
def delete_manifest(self, manifest_name): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2276 |
"""Delete a specific manifest |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2277 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2278 |
:param manifest_name: name of manifest to remove |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2279 |
:returns: Nothing exception raised if deletion fails |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2280 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2281 |
LOG.debug("AIService.delete_manifest():manifest_name: %s" % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2282 |
(manifest_name)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2283 |
ai_cmd = "/usr/bin/pfexec /usr/sbin/installadm delete-manifest -m " + \ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2284 |
manifest_name + " -n " + self.name |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2285 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2286 |
_stdout, _rc = _ssh_execute(self.ssh_obj, ai_cmd) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2287 |
except Exception as _err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2288 |
raise AIDeleteManifestFail(_("Failed to delete AI Manifest %s") % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2289 |
(manifest_name)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2290 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2291 |
# Update list of manifests for this service |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2292 |
self._manifests = self._get_manifest_names() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2293 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2294 |
def create_profile(self, profile_name, profile_path, mac, env): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2295 |
"""Create a profile associated with this service |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2296 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2297 |
:param profile)_name: profile name to create |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2298 |
:param profile_path: path to profile file to use |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2299 |
:param mac: MAC address to add as criteria |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2300 |
:param env: Environment to apply profile to |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2301 |
:returns: Nothing exception raised if creation fails |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2302 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2303 |
LOG.debug("AIService.create_profile():profile_name: " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2304 |
"'%s', profile_path: '%s', mac: '%s'" % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2305 |
(profile_name, profile_path, mac)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2306 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2307 |
ai_cmd = "/usr/bin/pfexec /usr/sbin/installadm create-profile -n " + \ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2308 |
self.name + " -p " + profile_name + " -f " + profile_path + \ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2309 |
" -c mac=" + mac |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2310 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2311 |
if env is not None: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2312 |
ai_cmd = ai_cmd + " -e " + env |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2313 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2314 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2315 |
_stdout, _rc = _ssh_execute(self.ssh_obj, ai_cmd) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2316 |
except Exception as _err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2317 |
raise AICreateProfileFail(_("Failed to create AI Profile %s.") % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2318 |
(profile_name)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2319 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2320 |
# Update list of profiles for this service |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2321 |
self._profiles = self._get_profile_names() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2322 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2323 |
def delete_profile(self, profile_name): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2324 |
"""Delete a specific profile |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2325 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2326 |
:param profile_name: name of profile to remove |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2327 |
:returns: Nothing exception raised if deletion fails |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2328 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2329 |
LOG.debug("AIService.delete_profile():profile_name: %s" % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2330 |
(profile_name)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2331 |
ai_cmd = "/usr/bin/pfexec /usr/sbin/installadm delete-profile -p " + \ |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2332 |
profile_name + " -n " + self.name |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2333 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2334 |
_stdout, _rc = _ssh_execute(self.ssh_obj, ai_cmd) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2335 |
except Exception as _err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2336 |
raise AIDeleteProfileFail(_("Failed to delete AI Profile %s") % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2337 |
(profile_name)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2338 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2339 |
# Update list of profiles for this service |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2340 |
self._profiles = self._get_profile_names() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2341 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2342 |
def copy_remote_file(self, local, remote): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2343 |
"""Using scp copy local file to remote location |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2344 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2345 |
:param local: Local file path to copy |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2346 |
:param remote: Remote file path to copy to |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2347 |
:returns: Nothing, exception raised on failure |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2348 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2349 |
LOG.debug("AIService.copy_remote_file():local: %s, remote: %s" % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2350 |
(local, remote)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2351 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2352 |
scp = SCPClient(self.ssh_obj.get_transport()) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2353 |
scp.put(local, remote) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2354 |
except Exception as err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2355 |
err_msg = _("Failed to copy file to remote server: %s") % err |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2356 |
raise SolarisIPMIError(msg=err_msg) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2357 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2358 |
def delete_remote_file(self, path): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2359 |
"""Remove remote file in AI Server |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2360 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2361 |
:param path: Path of remote file to remove |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2362 |
:return: Nothing exception raised on failure |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2363 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2364 |
LOG.debug("AIService.delete_remote_file():path: %s" % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2365 |
(path)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2366 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2367 |
ai_cmd = "/usr/bin/rm -f " + path |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2368 |
try: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2369 |
_stdout, _rc = _ssh_execute(self.ssh_obj, ai_cmd) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2370 |
except Exception as err: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2371 |
err_msg = _("Failed to delete remote file: %s") % err |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2372 |
raise SolarisIPMIError(msg=err_msg) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2373 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2374 |
def _get_image_path(self): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2375 |
"""Retrieve image_path for this service |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2376 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2377 |
:returns: image_path property |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2378 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2379 |
LOG.debug("AIService._get_image_path()") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2380 |
ai_cmd = "/usr/bin/pfexec /usr/sbin/installadm list -vn " + self.name |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2381 |
stdout, _rc = _ssh_execute(self.ssh_obj, ai_cmd) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2382 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2383 |
for line in stdout.splitlines(): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2384 |
words = line.split() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2385 |
if len(words) > 2 and words[0] == "Image" and words[1] == "Path": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2386 |
image_path = words[-1] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2387 |
LOG.debug("AIService._get_image_path():image_path: %s" % (image_path)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2388 |
return image_path |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2389 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2390 |
def _parse_client(self, list_out): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2391 |
"""Return service name and client from installadm list -e output |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2392 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2393 |
:param list_out: stdout from installadm list -e |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2394 |
:returns: Service Name and MAC Address |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2395 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2396 |
LOG.debug("AIService._parse_client():list_out: %s" % (list_out)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2397 |
lines = list_out.splitlines() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2398 |
service_name = None |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2399 |
client_name = None |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2400 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2401 |
if len(lines[2].split()[0]) > 0: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2402 |
service_name = lines[2].split()[0] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2403 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2404 |
if len(lines[2].split()[1]) > 0: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2405 |
client_name = lines[2].split()[1] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2406 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2407 |
LOG.debug("AIService._parse_client():service_name: %s" % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2408 |
(service_name)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2409 |
LOG.debug("AIService._parse_client():client_name: %s" % (client_name)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2410 |
return service_name, client_name |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2411 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2412 |
def _parse_service_name(self, list_out): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2413 |
"""Given installadm list -n output, parse out service name |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2414 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2415 |
:param list_out: stdout from installadm list -n |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2416 |
:returns: Service Name |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2417 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2418 |
LOG.debug("AIService._parse_service_name():list_out: %s" % (list_out)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2419 |
service_name = None |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2420 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2421 |
lines = list_out.splitlines() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2422 |
if len(lines[2].split()[0]) > 0: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2423 |
service_name = lines[2].split()[0] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2424 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2425 |
LOG.debug("AIService._parse_service_name():service_name: %s" % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2426 |
(service_name)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2427 |
return service_name |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2428 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2429 |
def _get_ssh_connection(self): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2430 |
"""Returns an SSH client connected to a node. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2431 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2432 |
:returns: paramiko.SSHClient, an active ssh connection. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2433 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2434 |
LOG.debug("AIService._get_ssh_connection()") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2435 |
return utils.ssh_connect(self._get_ssh_dict()) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2436 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2437 |
def _get_ssh_dict(self): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2438 |
"""Generate SSH Dictionary for SSH Connection via paramiko |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2439 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2440 |
:returns: dictionary for paramiko connection |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2441 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2442 |
LOG.debug("AIService._get_ssh_dict()") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2443 |
if not CONF.ai.server or not CONF.ai.username: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2444 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2445 |
"SSH server and username must be set.")) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2446 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2447 |
ssh_dict = { |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2448 |
'host': CONF.ai.server, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2449 |
'username': CONF.ai.username, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2450 |
'port': int(CONF.ai.port), |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2451 |
'timeout': int(CONF.ai.timeout) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2452 |
} |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2453 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2454 |
key_contents = key_filename = password = None |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2455 |
if CONF.ai.ssh_key_contents and CONF.ai.ssh_key_contents != "None": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2456 |
key_contents = CONF.ai.ssh_key_contents |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2457 |
if CONF.ai.ssh_key_file and CONF.ai.ssh_key_file != "None": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2458 |
key_filename = CONF.ai.ssh_key_file |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2459 |
if CONF.ai.password and CONF.ai.password != "None": |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2460 |
password = CONF.ai.password |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2461 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2462 |
if len(filter(None, (key_filename, key_contents))) != 1: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2463 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2464 |
"SSH requires one and only one of " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2465 |
"ssh_key_file or ssh_key_contents to be set.")) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2466 |
if password: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2467 |
ssh_dict['password'] = password |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2468 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2469 |
if key_contents: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2470 |
ssh_dict['key_contents'] = key_contents |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2471 |
else: |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2472 |
if not os.path.isfile(key_filename): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2473 |
raise exception.InvalidParameterValue(_( |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2474 |
"SSH key file %s not found.") % key_filename) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2475 |
ssh_dict['key_filename'] = key_filename |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2476 |
LOG.debug("AIService._get_ssh_dict():ssh_dict: %s" % (ssh_dict)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2477 |
return ssh_dict |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2478 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2479 |
def _get_manifest_names(self): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2480 |
"""Get a list of manifest names for this service |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2481 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2482 |
:returns: list() of manifest names |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2483 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2484 |
LOG.debug("AIService._get_manifest_names()") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2485 |
ai_cmd = "/usr/bin/pfexec /usr/sbin/installadm list -mn " + self.name |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2486 |
stdout, _rc = _ssh_execute(self.ssh_obj, ai_cmd, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2487 |
err_msg=_("Failed to retrieve manifests" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2488 |
" for service %s") % (self.name)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2489 |
return self._parse_names(stdout) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2490 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2491 |
def _get_profile_names(self): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2492 |
"""Get a list of profile names for this service |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2493 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2494 |
:returns: list() of profile names |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2495 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2496 |
LOG.debug("AIService._get_profile_names()") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2497 |
ai_cmd = "/usr/bin/pfexec /usr/sbin/installadm list -pn " + self.name |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2498 |
stdout, _rc = _ssh_execute(self.ssh_obj, ai_cmd, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2499 |
err_msg=_("Failed to retrieve profiles for " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2500 |
"service %s") % (self.name)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2501 |
return self._parse_names(stdout) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2502 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2503 |
def _get_all_client_names(self): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2504 |
"""Get a list of client names for this service |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2505 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2506 |
:returns: list() of client/mac names |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2507 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2508 |
LOG.debug("AIService._get_all_client_names()") |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2509 |
ai_cmd = "/usr/bin/pfexec /usr/sbin/installadm list -c" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2510 |
stdout, _rc = _ssh_execute(self.ssh_obj, ai_cmd, |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2511 |
err_msg=_("Failed to retrieve clients for " |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2512 |
"service %s") % (self.name)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2513 |
# Store client names all in lower case |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2514 |
return [client.lower() for client in self._parse_names(stdout)] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2515 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2516 |
def _parse_names(self, list_out): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2517 |
"""Parse client/manifest/profile names from installadm list output |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2518 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2519 |
Note: when we convert to using RAD, parsing installadm CLI output |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2520 |
will not be required, as API will return a list of names. |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2521 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2522 |
:param list_out: stdout from installadm list -c or -mn or -pn |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2523 |
:returns: a list of client/manifest/profile names |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2524 |
""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2525 |
LOG.debug("AIService._parse_names():list_out: %s" % |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2526 |
(list_out)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2527 |
names = [] |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2528 |
lines = list_out.splitlines() |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2529 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2530 |
# Get index into string for client/manifest/profile names |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2531 |
# client/manifest/profile names are all in 2nd column of output |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2532 |
if len(lines) > 1: |
4567
921fa080154a
21341088 Parsing manifest/profiles fails if multiple criteria present
Matt Keenan <matt.keenan@oracle.com>
parents:
4460
diff
changeset
|
2533 |
col_start = lines[1].index(" --") + 1 |
921fa080154a
21341088 Parsing manifest/profiles fails if multiple criteria present
Matt Keenan <matt.keenan@oracle.com>
parents:
4460
diff
changeset
|
2534 |
col_end = lines[1][col_start:].index(" --") + 1 + col_start |
4460
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2535 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2536 |
for line in range(2, len(lines)): |
4567
921fa080154a
21341088 Parsing manifest/profiles fails if multiple criteria present
Matt Keenan <matt.keenan@oracle.com>
parents:
4460
diff
changeset
|
2537 |
if lines[line][col_start:col_end].strip(): |
921fa080154a
21341088 Parsing manifest/profiles fails if multiple criteria present
Matt Keenan <matt.keenan@oracle.com>
parents:
4460
diff
changeset
|
2538 |
names.append(lines[line][col_start:col_end].strip()) |
4460
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2539 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2540 |
LOG.debug("AIService._parse_names():names: %s" % (names)) |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2541 |
return names |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2542 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2543 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2544 |
# Custom Exceptions |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2545 |
class AICreateServiceFail(exception.IronicException): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2546 |
"""Exception type for AI Service creation failure""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2547 |
pass |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2548 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2549 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2550 |
class AIDeleteServiceFail(exception.IronicException): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2551 |
"""Exception type for AI Service deletion failure""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2552 |
pass |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2553 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2554 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2555 |
class AICreateClientFail(exception.IronicException): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2556 |
"""Exception type for AI Client creation failure""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2557 |
pass |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2558 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2559 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2560 |
class AIDeleteClientFail(exception.IronicException): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2561 |
"""Exception type for AI Client deletion failure""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2562 |
pass |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2563 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2564 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2565 |
class AICreateManifestFail(exception.IronicException): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2566 |
"""Exception type for AI Manifest creation failure""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2567 |
pass |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2568 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2569 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2570 |
class AIDeleteManifestFail(exception.IronicException): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2571 |
"""Exception type for AI Manifest deletion failure""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2572 |
pass |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2573 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2574 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2575 |
class AICreateProfileFail(exception.IronicException): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2576 |
"""Exception type for AI Profile creation failure""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2577 |
pass |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2578 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2579 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2580 |
class AIDeleteProfileFail(exception.IronicException): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2581 |
"""Exception type for AI Profile deletion failure""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2582 |
pass |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2583 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2584 |
|
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2585 |
class SolarisIPMIError(exception.IronicException): |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2586 |
"""Generic Solaris IPMI driver exception""" |
e5811789e2fb
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff
changeset
|
2587 |
message = _("%(msg)s") |