plandesc.py revision 3339
6d4349ab76204cc56e3c5745f4b0d047ff082a03Eugen Kuksa# CDDL HEADER START
aead985e48027c9df1ef553b17df29dd378757aaJulian Kornberger# The contents of this file are subject to the terms of the
5cad3e82e8c017bc189c4cecc00541ec19a2a6e2Julian Kornberger# Common Development and Distribution License (the "License").
9c9b4f0d0199c3b1dbff564b87435b6693b7e692Julian Kornberger# You may not use this file except in compliance with the License.
dda6f544eb58d850394073e34ae6127498869a77Christian Clausen# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
b0ad67a7b41855a9148f346eb5b5d2b9276796ddhenning mueller# See the License for the specific language governing permissions
b0ad67a7b41855a9148f346eb5b5d2b9276796ddhenning mueller# and limitations under the License.
ee5342a8882c2fc7631fcffb5497e6597747887cTim Reddehase# When distributing Covered Code, include this CDDL HEADER in each
6d4349ab76204cc56e3c5745f4b0d047ff082a03Eugen Kuksa# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6d4349ab76204cc56e3c5745f4b0d047ff082a03Eugen Kuksa# If applicable, add the following below this CDDL HEADER, with the
0075dcb5aeeee4864fe9f64db82c8a8202bbe6d6henning mueller# fields enclosed by brackets "[]" replaced with your own identifying
cbb18f95cb8354f0c3fb44ba5134dadc7ad6b2ecJulian Kornberger# information: Portions Copyright [yyyy] [name of copyright owner]
940c9c3e36eaf2a919ea2f89e7ecde3f6ebc3450Eugen Kuksa# CDDL HEADER END
b0ad67a7b41855a9148f346eb5b5d2b9276796ddhenning mueller# Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
0772cf7b22adf46dbab68e829d6a2cd8e8d1bc2ahenning muellerPlanDescription and _ActionPlan classes
b9f99a06294e593ce8fb34b015e83003229db058Julian KornbergerThese classes are part of the public API, and any changes here may require
b3b159fb3284b66d0f8189a6a145c8163ccdae68henning muellerbumping CURRENT_API_VERSION in pkg.api
a5015ca9daa067f062e9e373c3dfafd5631560d9Julian KornbergerThe PlanDescription class is a public interface which contains all the data
a5015ca9daa067f062e9e373c3dfafd5631560d9Julian Kornbergerassociated with an image-modifying operation.
6c8d349bce5a8aa4c5af757a84d9432153024e8fTim ReddehaseThe _ActionPlan class is a private interface used to keep track of actions
631f43db46ad7d375010c3169c81764eb27270a3Julian Kornbergermodified within an image during an image-modifying operation.
b0ad67a7b41855a9148f346eb5b5d2b9276796ddhenning muellerfrom pkg.api_common import (PackageInfo, LicenseInfo)
b0ad67a7b41855a9148f346eb5b5d2b9276796ddhenning muellerEVALUATED_PKGS = 1 # established fmri changes
36775360692520baa2625045372081b2cbc9959dTim Reddehaseclass _ActionPlan(collections.namedtuple("_ActionPlan", "p src dst")):
2ae84818de6541409f6c8f2b417b868325aed315Tim Reddehase """A named tuple used to keep track of all the actions that will be
2ae84818de6541409f6c8f2b417b868325aed315Tim Reddehase executed during an image-modifying procecure."""
33d42e7c36aef2d703ed3e35536dca4cd4290470Tim Reddehase # Class has no __init__ method; pylint: disable=W0232
33d42e7c36aef2d703ed3e35536dca4cd4290470Tim Reddehase # Use __slots__ on an old style class; pylint: disable=E1001
1b6021653a43264993b21ebb20e0119aa2fd6741henning mueller """Returns the serialized state of this object in a format
0eae0f423c62bcc939e76f37ce7a7a9913b58422Julian Kornberger that that can be easily stored using JSON, pickle, etc."""
0eae0f423c62bcc939e76f37ce7a7a9913b58422Julian Kornberger return pkg.misc.json_encode(_ActionPlan.__name__, tuple(obj),
0eae0f423c62bcc939e76f37ce7a7a9913b58422Julian Kornberger _ActionPlan.__state__desc, je_state=je_state)
__state__desc = {
str: {
str: {
if reset_volatiles:
if reset_volatiles:
return state
return rv
except OSError as e:
del state
except OSError as e:
del state
return sorted(
ret = []
return ret
mver_source = None
if m in mediators:
if mimpl_ver:
mimpl_ver = \
if mver:
out = (m,
return ret
ret = []
elif orig_ver:
elif new_ver:
elif orig_impl:
elif new_impl:
return ret
vs = []
fs = []
rv = [
return rv
yield notes
src_li = None
if src:
dest_li = None
if dest:
if pfmri:
api_inst=None):
added_fmris = []
removed_fmris = []
changed_fmris = []
affected_fmris = []
backup_be_name = None
be_name = None
space_available = None
space_required = None
facets_changed = []
variants_changed = []
services_affected = []
mediators_changed = []
editables_changed = []
licenses = []
if child_images is None:
child_images = []
release_notes = []
if self:
elif rem is not None:
if emoved:
if eremoved:
if einstalled:
if eupdated:
src_tup = ()
if src_li:
dest_tup = ()
if dest_li:
if api_inst:
ret = {
return ret
if parent:
if parent:
if ordered:
ordered_list = []
yield (item_id, None,
[cpkg]