author | Erik Trauschke <Erik.Trauschke@oracle.com> |
Wed, 19 Dec 2012 14:15:28 -0800 | |
changeset 2839 | 7b0fc73bf146 |
parent 2708 | 4dac3e277ccf |
child 3014 | a88a867e3a9d |
permissions | -rw-r--r-- |
1516
8c950a3b4171
10485 move pkg(5) to Python 2.6
Rich Burridge <rich.burridge@sun.com>
parents:
1505
diff
changeset
|
1 |
#!/usr/bin/python |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2 |
# |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
3 |
# CDDL HEADER START |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
4 |
# |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
5 |
# The contents of this file are subject to the terms of the |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
6 |
# Common Development and Distribution License (the "License"). |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
7 |
# You may not use this file except in compliance with the License. |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
8 |
# |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
9 |
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
10 |
# or http://www.opensolaris.org/os/licensing. |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
11 |
# See the License for the specific language governing permissions |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
12 |
# and limitations under the License. |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
13 |
# |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
14 |
# When distributing Covered Code, include this CDDL HEADER in each |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
15 |
# file and include the License file at usr/src/OPENSOLARIS.LICENSE. |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
16 |
# If applicable, add the following below this CDDL HEADER, with the |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
17 |
# fields enclosed by brackets "[]" replaced with your own identifying |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
18 |
# information: Portions Copyright [yyyy] [name of copyright owner] |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
19 |
# |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
20 |
# CDDL HEADER END |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
21 |
# |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
22 |
|
1992
627a96abb313
15031 pkg install traceback if multiple actuator values present
Richard Lowe <richlowe@richlowe.net>
parents:
1747
diff
changeset
|
23 |
# |
2690
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
24 |
# Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. |
1992
627a96abb313
15031 pkg install traceback if multiple actuator values present
Richard Lowe <richlowe@richlowe.net>
parents:
1747
diff
changeset
|
25 |
# |
627a96abb313
15031 pkg install traceback if multiple actuator values present
Richard Lowe <richlowe@richlowe.net>
parents:
1747
diff
changeset
|
26 |
|
2310
ce10607d5332
11684 desire option to not propagate certs to non-global zones
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2205
diff
changeset
|
27 |
import pkg.smf as smf |
2708
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
28 |
import pkg.actions |
2333
d7d310363aeb
18191 need flag to indicate some self-assembly is required
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2310
diff
changeset
|
29 |
import os |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
30 |
|
2690
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
31 |
import pkg.misc |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
32 |
|
2310
ce10607d5332
11684 desire option to not propagate certs to non-global zones
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2205
diff
changeset
|
33 |
from pkg.client.debugvalues import DebugValues |
2333
d7d310363aeb
18191 need flag to indicate some self-assembly is required
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2310
diff
changeset
|
34 |
from pkg.client.imagetypes import IMG_USER, IMG_ENTIRE |
1992
627a96abb313
15031 pkg install traceback if multiple actuator values present
Richard Lowe <richlowe@richlowe.net>
parents:
1747
diff
changeset
|
35 |
|
2708
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
36 |
|
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
37 |
class Actuator(object): |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
38 |
"""Actuators are action attributes that cause side effects |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
39 |
on live images when those actions are updated, installed |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
40 |
or removed. Since no side effects are caused when the |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
41 |
affected image isn't the current root image, the OS may |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
42 |
need to cause the equivalent effect during boot. |
2708
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
43 |
This is Solaris specific for now. """ |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
44 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
45 |
actuator_attrs = set([ |
1328
5c3747a4fe0a
9387 pkg fix should honor reboot-needed flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1019
diff
changeset
|
46 |
"reboot-needed", # have to reboot to update this file |
2708
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
47 |
"release-note", # conditionally include this file |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
48 |
# in release notes |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
49 |
"refresh_fmri", # refresh this service on any change |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
50 |
"restart_fmri", # restart this service on any change |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
51 |
"suspend_fmri", # suspend this service during update |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
52 |
"disable_fmri" # disable this service prior to removal |
1992
627a96abb313
15031 pkg install traceback if multiple actuator values present
Richard Lowe <richlowe@richlowe.net>
parents:
1747
diff
changeset
|
53 |
]) |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
54 |
|
2690
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
55 |
__state__desc = { |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
56 |
"install": { |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
57 |
"disable_fmri": set(), |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
58 |
"reboot-needed": set(), |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
59 |
"refresh_fmri": set(), |
2708
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
60 |
"release-note": [(pkg.actions.generic.NSG, pkg.fmri.PkgFmri)], |
2690
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
61 |
"restart_fmri": set(), |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
62 |
"suspend_fmri": set(), |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
63 |
}, |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
64 |
"removal": { |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
65 |
"disable_fmri": set(), |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
66 |
"reboot-needed": set(), |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
67 |
"refresh_fmri": set(), |
2708
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
68 |
"release-note": [(pkg.actions.generic.NSG, pkg.fmri.PkgFmri)], |
2690
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
69 |
"restart_fmri": set(), |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
70 |
"suspend_fmri": set(), |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
71 |
}, |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
72 |
"update": { |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
73 |
"disable_fmri": set(), |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
74 |
"reboot-needed": set(), |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
75 |
"refresh_fmri": set(), |
2708
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
76 |
"release-note": [(pkg.actions.generic.NSG, pkg.fmri.PkgFmri)], |
2690
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
77 |
"restart_fmri": set(), |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
78 |
"suspend_fmri": set(), |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
79 |
}, |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
80 |
} |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
81 |
|
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
82 |
def __init__(self): |
2708
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
83 |
self.install = {} |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
84 |
self.removal = {} |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
85 |
self.update = {} |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
86 |
self.suspend_fmris = None |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
87 |
self.tmp_suspend_fmris = None |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
88 |
self.do_nothing = True |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
89 |
self.cmd_path = "" |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
90 |
|
2690
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
91 |
@staticmethod |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
92 |
def getstate(obj, je_state=None): |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
93 |
"""Returns the serialized state of this object in a format |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
94 |
that that can be easily stored using JSON, pickle, etc.""" |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
95 |
return pkg.misc.json_encode(Actuator.__name__, obj.__dict__, |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
96 |
Actuator.__state__desc, je_state=je_state) |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
97 |
|
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
98 |
@staticmethod |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
99 |
def setstate(obj, state, jd_state=None): |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
100 |
"""Update the state of this object using previously serialized |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
101 |
state obtained via getstate().""" |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
102 |
|
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
103 |
# get the name of the object we're dealing with |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
104 |
name = type(obj).__name__ |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
105 |
|
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
106 |
# decode serialized state into python objects |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
107 |
state = pkg.misc.json_decode(name, state, |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
108 |
Actuator.__state__desc, jd_state=jd_state) |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
109 |
|
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
110 |
# bulk update |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
111 |
obj.__dict__.update(state) |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
112 |
|
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
113 |
@staticmethod |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
114 |
def fromstate(state, jd_state=None): |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
115 |
"""Allocate a new object using previously serialized state |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
116 |
obtained via getstate().""" |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
117 |
rv = Actuator() |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
118 |
Actuator.setstate(rv, state, jd_state) |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
119 |
return rv |
11a8cae074e0
7140224 package downloaded messages displayed twice for each zone
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2517
diff
changeset
|
120 |
|
2205
53d0be594162
3822 image plans should prevent conflicting actions from being installed
Danek Duvall <danek.duvall@oracle.com>
parents:
2040
diff
changeset
|
121 |
def __bool__(self): |
53d0be594162
3822 image plans should prevent conflicting actions from being installed
Danek Duvall <danek.duvall@oracle.com>
parents:
2040
diff
changeset
|
122 |
return self.install or self.removal or self.update |
53d0be594162
3822 image plans should prevent conflicting actions from being installed
Danek Duvall <danek.duvall@oracle.com>
parents:
2040
diff
changeset
|
123 |
|
2708
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
124 |
def __nonzero__(self): |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
125 |
return bool(self.install or self.removal or self.update) |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
126 |
|
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
127 |
# scan_* functions take ActionPlan arguments (see imageplan.py) |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
128 |
def scan_install(self, ap): |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
129 |
self.__scan(self.install, ap.dst, ap.p.destination_fmri) |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
130 |
|
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
131 |
def scan_removal(self, ap): |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
132 |
self.__scan(self.removal, ap.src, ap.p.origin_fmri) |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
133 |
|
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
134 |
def scan_update(self, ap): |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
135 |
if ap.src: |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
136 |
self.__scan(self.update, ap.src, ap.p.destination_fmri) |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
137 |
self.__scan(self.update, ap.dst, ap.p.destination_fmri) |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
138 |
|
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
139 |
def __scan(self, dictionary, act, fmri): |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
140 |
attrs = act.attrs |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
141 |
for a in set(attrs.keys()) & self.actuator_attrs: |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
142 |
if a != "release-note": |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
143 |
values = attrs[a] |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
144 |
if not isinstance(values, list): |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
145 |
values = [values] |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
146 |
dictionary.setdefault(a, set()).update(values) |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
147 |
else: |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
148 |
if act.name == "file": # ignore for non-files |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
149 |
dictionary.setdefault(a, list()).append( |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
150 |
(act, fmri)) |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
151 |
|
2034
d5ee7746faeb
16108 boot environments should be created by default only when needed
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
1992
diff
changeset
|
152 |
def get_list(self): |
d5ee7746faeb
16108 boot environments should be created by default only when needed
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
1992
diff
changeset
|
153 |
"""Returns a list of actuator value pairs, suitable for printing""" |
1521
946bd128177d
8647 devices not usable immediately after install
Danek Duvall <danek.duvall@sun.com>
parents:
1516
diff
changeset
|
154 |
def check_val(dfmri): |
946bd128177d
8647 devices not usable immediately after install
Danek Duvall <danek.duvall@sun.com>
parents:
1516
diff
changeset
|
155 |
# For actuators which are a single, global function that |
946bd128177d
8647 devices not usable immediately after install
Danek Duvall <danek.duvall@sun.com>
parents:
1516
diff
changeset
|
156 |
# needs to get executed, simply print true. |
2708
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
157 |
if callable(dfmri) or isinstance(dfmri, list): |
1521
946bd128177d
8647 devices not usable immediately after install
Danek Duvall <danek.duvall@sun.com>
parents:
1516
diff
changeset
|
158 |
return [ "true" ] |
946bd128177d
8647 devices not usable immediately after install
Danek Duvall <danek.duvall@sun.com>
parents:
1516
diff
changeset
|
159 |
else: |
946bd128177d
8647 devices not usable immediately after install
Danek Duvall <danek.duvall@sun.com>
parents:
1516
diff
changeset
|
160 |
return dfmri |
946bd128177d
8647 devices not usable immediately after install
Danek Duvall <danek.duvall@sun.com>
parents:
1516
diff
changeset
|
161 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1328
diff
changeset
|
162 |
merge = {} |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1328
diff
changeset
|
163 |
for d in [self.removal, self.update, self.install]: |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1328
diff
changeset
|
164 |
for a in d.keys(): |
1521
946bd128177d
8647 devices not usable immediately after install
Danek Duvall <danek.duvall@sun.com>
parents:
1516
diff
changeset
|
165 |
for smf in check_val(d[a]): |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1328
diff
changeset
|
166 |
merge.setdefault(a, set()).add(smf) |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1328
diff
changeset
|
167 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1328
diff
changeset
|
168 |
if self.reboot_needed(): |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1328
diff
changeset
|
169 |
merge["reboot-needed"] = set(["true"]) |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1328
diff
changeset
|
170 |
else: |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1328
diff
changeset
|
171 |
merge["reboot-needed"] = set(["false"]) |
2034
d5ee7746faeb
16108 boot environments should be created by default only when needed
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
1992
diff
changeset
|
172 |
return [(fmri, smf) |
d5ee7746faeb
16108 boot environments should be created by default only when needed
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
1992
diff
changeset
|
173 |
for fmri in merge |
d5ee7746faeb
16108 boot environments should be created by default only when needed
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
1992
diff
changeset
|
174 |
for smf in merge[fmri] |
d5ee7746faeb
16108 boot environments should be created by default only when needed
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
1992
diff
changeset
|
175 |
] |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1328
diff
changeset
|
176 |
|
2708
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
177 |
def get_release_note_info(self): |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
178 |
"""Returns a list of tuples of possible release notes""" |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
179 |
return self.update.get("release-note", []) + \ |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
180 |
self.install.get("release-note", []) |
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
181 |
|
2034
d5ee7746faeb
16108 boot environments should be created by default only when needed
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
1992
diff
changeset
|
182 |
def get_services_list(self): |
d5ee7746faeb
16108 boot environments should be created by default only when needed
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
1992
diff
changeset
|
183 |
"""Returns a list of services that would be restarted""" |
2333
d7d310363aeb
18191 need flag to indicate some self-assembly is required
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2310
diff
changeset
|
184 |
return [(fmri, smf) for fmri, smf in self.get_list() |
2034
d5ee7746faeb
16108 boot environments should be created by default only when needed
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
1992
diff
changeset
|
185 |
if smf not in ["true", "false"]] |
d5ee7746faeb
16108 boot environments should be created by default only when needed
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
1992
diff
changeset
|
186 |
|
d5ee7746faeb
16108 boot environments should be created by default only when needed
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
1992
diff
changeset
|
187 |
def __str__(self): |
2333
d7d310363aeb
18191 need flag to indicate some self-assembly is required
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2310
diff
changeset
|
188 |
return "\n".join(" %16s: %s" % (fmri, smf) |
2034
d5ee7746faeb
16108 boot environments should be created by default only when needed
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
1992
diff
changeset
|
189 |
for fmri, smf in self.get_list()) |
690
f01787008e69
4659 actuator printing w/ install -nv is incorrect
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
655
diff
changeset
|
190 |
|
2517
8f26a1d7100c
18827 pkg(1) should provide interfaces to control backup BE creation
Shawn Walker <shawn.walker@oracle.com>
parents:
2333
diff
changeset
|
191 |
def reboot_advised(self): |
8f26a1d7100c
18827 pkg(1) should provide interfaces to control backup BE creation
Shawn Walker <shawn.walker@oracle.com>
parents:
2333
diff
changeset
|
192 |
"""Returns True if action install execution may require a |
8f26a1d7100c
18827 pkg(1) should provide interfaces to control backup BE creation
Shawn Walker <shawn.walker@oracle.com>
parents:
2333
diff
changeset
|
193 |
reboot.""" |
8f26a1d7100c
18827 pkg(1) should provide interfaces to control backup BE creation
Shawn Walker <shawn.walker@oracle.com>
parents:
2333
diff
changeset
|
194 |
|
8f26a1d7100c
18827 pkg(1) should provide interfaces to control backup BE creation
Shawn Walker <shawn.walker@oracle.com>
parents:
2333
diff
changeset
|
195 |
return bool("true" in self.install.get("reboot-needed", [])) |
8f26a1d7100c
18827 pkg(1) should provide interfaces to control backup BE creation
Shawn Walker <shawn.walker@oracle.com>
parents:
2333
diff
changeset
|
196 |
|
1328
5c3747a4fe0a
9387 pkg fix should honor reboot-needed flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1019
diff
changeset
|
197 |
def reboot_needed(self): |
2517
8f26a1d7100c
18827 pkg(1) should provide interfaces to control backup BE creation
Shawn Walker <shawn.walker@oracle.com>
parents:
2333
diff
changeset
|
198 |
"""Returns True if action execution requires a new boot |
8f26a1d7100c
18827 pkg(1) should provide interfaces to control backup BE creation
Shawn Walker <shawn.walker@oracle.com>
parents:
2333
diff
changeset
|
199 |
environment.""" |
8f26a1d7100c
18827 pkg(1) should provide interfaces to control backup BE creation
Shawn Walker <shawn.walker@oracle.com>
parents:
2333
diff
changeset
|
200 |
|
1328
5c3747a4fe0a
9387 pkg fix should honor reboot-needed flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1019
diff
changeset
|
201 |
return bool("true" in self.update.get("reboot-needed", [])) or \ |
5c3747a4fe0a
9387 pkg fix should honor reboot-needed flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1019
diff
changeset
|
202 |
bool("true" in self.removal.get("reboot-needed", [])) |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
203 |
|
2708
4dac3e277ccf
7137406 pkg image-update could display release notes (or pointer to)
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2690
diff
changeset
|
204 |
def exec_prep(self, image): |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
205 |
if not image.is_liveroot(): |
2333
d7d310363aeb
18191 need flag to indicate some self-assembly is required
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2310
diff
changeset
|
206 |
# we're doing off-line pkg ops; we need |
d7d310363aeb
18191 need flag to indicate some self-assembly is required
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2310
diff
changeset
|
207 |
# to support self-assembly milestone |
d7d310363aeb
18191 need flag to indicate some self-assembly is required
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2310
diff
changeset
|
208 |
# so create the necessary marker file |
d7d310363aeb
18191 need flag to indicate some self-assembly is required
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2310
diff
changeset
|
209 |
|
d7d310363aeb
18191 need flag to indicate some self-assembly is required
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2310
diff
changeset
|
210 |
if image.type != IMG_USER: |
d7d310363aeb
18191 need flag to indicate some self-assembly is required
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2310
diff
changeset
|
211 |
path = os.path.join(image.root, |
d7d310363aeb
18191 need flag to indicate some self-assembly is required
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2310
diff
changeset
|
212 |
".SELF-ASSEMBLY-REQUIRED") |
d7d310363aeb
18191 need flag to indicate some self-assembly is required
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2310
diff
changeset
|
213 |
# create only if it doesn't exist |
d7d310363aeb
18191 need flag to indicate some self-assembly is required
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2310
diff
changeset
|
214 |
if not os.path.exists(path): |
d7d310363aeb
18191 need flag to indicate some self-assembly is required
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2310
diff
changeset
|
215 |
os.close(os.open(path, |
d7d310363aeb
18191 need flag to indicate some self-assembly is required
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2310
diff
changeset
|
216 |
os.O_EXCL | |
d7d310363aeb
18191 need flag to indicate some self-assembly is required
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2310
diff
changeset
|
217 |
os.O_CREAT | |
d7d310363aeb
18191 need flag to indicate some self-assembly is required
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2310
diff
changeset
|
218 |
os.O_WRONLY)) |
2310
ce10607d5332
11684 desire option to not propagate certs to non-global zones
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2205
diff
changeset
|
219 |
if not DebugValues.get_value("smf_cmds_dir"): |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
220 |
return |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
221 |
self.do_nothing = False |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
222 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
223 |
def exec_pre_actuators(self, image): |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
224 |
"""do pre execution actuator processing...""" |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
225 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
226 |
if self.do_nothing: |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
227 |
return |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
228 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
229 |
suspend_fmris = self.update.get("suspend_fmri", set()) |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
230 |
tmp_suspend_fmris = set() |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
231 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
232 |
disable_fmris = self.removal.get("disable_fmri", set()) |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
233 |
|
2310
ce10607d5332
11684 desire option to not propagate certs to non-global zones
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2205
diff
changeset
|
234 |
suspend_fmris = smf.check_fmris("suspend_fmri", suspend_fmris) |
ce10607d5332
11684 desire option to not propagate certs to non-global zones
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2205
diff
changeset
|
235 |
disable_fmris = smf.check_fmris("disable_fmri", disable_fmris) |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
236 |
# eliminate services not loaded or not running |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
237 |
# remember those services enabled only temporarily |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
238 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
239 |
for fmri in suspend_fmris.copy(): |
2310
ce10607d5332
11684 desire option to not propagate certs to non-global zones
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2205
diff
changeset
|
240 |
state = smf.get_state(fmri) |
ce10607d5332
11684 desire option to not propagate certs to non-global zones
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2205
diff
changeset
|
241 |
if state <= smf.SMF_SVC_TMP_ENABLED: |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
242 |
suspend_fmris.remove(fmri) |
2310
ce10607d5332
11684 desire option to not propagate certs to non-global zones
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2205
diff
changeset
|
243 |
if state == smf.SMF_SVC_TMP_ENABLED: |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
244 |
tmp_suspend_fmris.add(fmri) |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
245 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
246 |
for fmri in disable_fmris.copy(): |
2310
ce10607d5332
11684 desire option to not propagate certs to non-global zones
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2205
diff
changeset
|
247 |
if smf.is_disabled(fmri): |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
248 |
disable_fmris.remove(fmri) |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
249 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
250 |
self.suspend_fmris = suspend_fmris |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
251 |
self.tmp_suspend_fmris = tmp_suspend_fmris |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
252 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
253 |
params = tuple(suspend_fmris | tmp_suspend_fmris) |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
254 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
255 |
if params: |
2310
ce10607d5332
11684 desire option to not propagate certs to non-global zones
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2205
diff
changeset
|
256 |
smf.disable(params, temporary=True) |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
257 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
258 |
params = tuple(disable_fmris) |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
259 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
260 |
if params: |
2310
ce10607d5332
11684 desire option to not propagate certs to non-global zones
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2205
diff
changeset
|
261 |
smf.disable(params) |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
262 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
263 |
def exec_fail_actuators(self, image): |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
264 |
"""handle a failed install""" |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
265 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
266 |
if self.do_nothing: |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
267 |
return |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
268 |
|
1992
627a96abb313
15031 pkg install traceback if multiple actuator values present
Richard Lowe <richlowe@richlowe.net>
parents:
1747
diff
changeset
|
269 |
params = tuple(self.suspend_fmris | |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
270 |
self.tmp_suspend_fmris) |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
271 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
272 |
if params: |
2310
ce10607d5332
11684 desire option to not propagate certs to non-global zones
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2205
diff
changeset
|
273 |
smf.mark("maintenance", params) |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
274 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
275 |
def exec_post_actuators(self, image): |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
276 |
"""do post execution actuator processing""" |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
277 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
278 |
if self.do_nothing: |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
279 |
return |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
280 |
|
2040
e7fbac4a4ab1
16898 callable actuators (e.g. built-in ones) should fire before package-specified ones
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
281 |
# handle callables first |
e7fbac4a4ab1
16898 callable actuators (e.g. built-in ones) should fire before package-specified ones
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
282 |
|
e7fbac4a4ab1
16898 callable actuators (e.g. built-in ones) should fire before package-specified ones
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
283 |
for act in self.removal.itervalues(): |
e7fbac4a4ab1
16898 callable actuators (e.g. built-in ones) should fire before package-specified ones
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
284 |
if callable(act): |
e7fbac4a4ab1
16898 callable actuators (e.g. built-in ones) should fire before package-specified ones
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
285 |
act() |
e7fbac4a4ab1
16898 callable actuators (e.g. built-in ones) should fire before package-specified ones
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
286 |
|
e7fbac4a4ab1
16898 callable actuators (e.g. built-in ones) should fire before package-specified ones
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
287 |
for act in self.install.itervalues(): |
e7fbac4a4ab1
16898 callable actuators (e.g. built-in ones) should fire before package-specified ones
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
288 |
if callable(act): |
e7fbac4a4ab1
16898 callable actuators (e.g. built-in ones) should fire before package-specified ones
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
289 |
act() |
e7fbac4a4ab1
16898 callable actuators (e.g. built-in ones) should fire before package-specified ones
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
290 |
|
e7fbac4a4ab1
16898 callable actuators (e.g. built-in ones) should fire before package-specified ones
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
291 |
for act in self.update.itervalues(): |
e7fbac4a4ab1
16898 callable actuators (e.g. built-in ones) should fire before package-specified ones
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
292 |
if callable(act): |
e7fbac4a4ab1
16898 callable actuators (e.g. built-in ones) should fire before package-specified ones
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
293 |
act() |
e7fbac4a4ab1
16898 callable actuators (e.g. built-in ones) should fire before package-specified ones
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
294 |
|
e7fbac4a4ab1
16898 callable actuators (e.g. built-in ones) should fire before package-specified ones
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
295 |
|
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
296 |
refresh_fmris = self.removal.get("refresh_fmri", set()) | \ |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
297 |
self.update.get("refresh_fmri", set()) | \ |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
298 |
self.install.get("refresh_fmri", set()) |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
299 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
300 |
restart_fmris = self.removal.get("restart_fmri", set()) | \ |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
301 |
self.update.get("restart_fmri", set()) | \ |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
302 |
self.install.get("restart_fmri", set()) |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
303 |
|
2310
ce10607d5332
11684 desire option to not propagate certs to non-global zones
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2205
diff
changeset
|
304 |
refresh_fmris = smf.check_fmris("refresh_fmri", refresh_fmris) |
ce10607d5332
11684 desire option to not propagate certs to non-global zones
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2205
diff
changeset
|
305 |
restart_fmris = smf.check_fmris("restart_fmri", restart_fmris) |
1747
4e2bf9d7a383
11617 looking for missing property value in actuator code causes KeyError
Tim Foster <tim.foster@sun.com>
parents:
1540
diff
changeset
|
306 |
|
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
307 |
# ignore services not present or not |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
308 |
# enabled |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
309 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
310 |
for fmri in refresh_fmris.copy(): |
2310
ce10607d5332
11684 desire option to not propagate certs to non-global zones
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2205
diff
changeset
|
311 |
if smf.is_disabled(fmri): |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
312 |
refresh_fmris.remove(fmri) |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
313 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
314 |
params = tuple(refresh_fmris) |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
315 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
316 |
if params: |
2310
ce10607d5332
11684 desire option to not propagate certs to non-global zones
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2205
diff
changeset
|
317 |
smf.refresh(params) |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
318 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
319 |
for fmri in restart_fmris.copy(): |
2310
ce10607d5332
11684 desire option to not propagate certs to non-global zones
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2205
diff
changeset
|
320 |
if smf.is_disabled(fmri): |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
321 |
restart_fmris.remove(fmri) |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
322 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
323 |
params = tuple(restart_fmris) |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
324 |
if params: |
2310
ce10607d5332
11684 desire option to not propagate certs to non-global zones
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2205
diff
changeset
|
325 |
smf.restart(params) |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
326 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
327 |
# reenable suspended services that were running |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
328 |
# be sure to not enable services that weren't running |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
329 |
# and temp. enable those services that were in that |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
330 |
# state. |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
331 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
332 |
params = tuple(self.suspend_fmris) |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
333 |
if params: |
2310
ce10607d5332
11684 desire option to not propagate certs to non-global zones
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2205
diff
changeset
|
334 |
smf.enable(params) |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
335 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
336 |
params = tuple(self.tmp_suspend_fmris) |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
337 |
if params: |
2310
ce10607d5332
11684 desire option to not propagate certs to non-global zones
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2205
diff
changeset
|
338 |
smf.enable(params, temporary=True) |