7125955 install_transfer/ips module should log more info about the packages being installed into the image
--- a/usr/src/lib/install_transfer/ips.py Wed Jun 06 11:03:59 2012 +0200
+++ b/usr/src/lib/install_transfer/ips.py Thu Jun 07 16:54:19 2012 -0600
@@ -39,6 +39,7 @@
import pkg.client.publisher as publisher
import pkg.misc as misc
+from pkg.fmri import PkgFmri
from pkg.client import global_settings
from pkg.client.api import IMG_TYPE_ENTIRE, IMG_TYPE_PARTIAL
from solaris_install import PKG5_API_VERSION
@@ -87,6 +88,7 @@
self._act_started = False
self._ind_started = False
self._item_started = False
+ self._package_dict = {}
def _logger_output(self, message):
if self.show_stdout:
@@ -112,7 +114,12 @@
self._dl_started = True
if self._dl_cur_pkg != self.cur_pkg:
- self._logger_output("Download: %s ..." % self.cur_pkg)
+ if (self.cur_pkg in self._package_dict):
+ fmri = self._package_dict[self.cur_pkg]
+ self._logger_output("Download: %s ...", fmri.get_fmri())
+ else:
+ # only hits this at end when the cur_pkg becomes empty str
+ self._logger_output("Download: %s ..." % self.cur_pkg)
self._dl_cur_pkg = self.cur_pkg
def dl_output_done(self):
@@ -147,6 +154,9 @@
self._logger_output("%s ... Done." % self.item_phase)
self._item_started = False
+ def set_package_dict(self, package_dict):
+ self._package_dict = package_dict
+
class InstallFancyProgressTracker(progress.FancyUNIXProgressTracker):
''' Subclass of the IPS api's FancyUNIXProgressTracker; we leverage
@@ -168,6 +178,7 @@
self._act_started = False
self._ind_started = False
self._item_started = False
+ self._package_dict = {}
def eval_output_start(self):
super(InstallFancyProgressTracker, self).eval_output_start()
@@ -192,7 +203,12 @@
self._dl_started = True
if self._dl_cur_pkg != self.cur_pkg:
- self.trans_logger.debug("Download: %s ..." % self.cur_pkg)
+ if (self.cur_pkg in self._package_dict):
+ fmri = self._package_dict[self.cur_pkg]
+ self.trans_logger.debug("Download: %s ...", fmri.get_fmri())
+ else:
+ # only hits this at end when the cur_pkg becomes empty str
+ self.trans_logger.debug("Download: %s ..." % self.cur_pkg)
self._dl_cur_pkg = self.cur_pkg
def dl_output_done(self):
@@ -234,6 +250,9 @@
self.trans_logger.debug("%s ... Done." % self.item_phase)
self._item_started = False
+ def set_package_dict(self, package_dict):
+ self._package_dict = package_dict
+
class AbstractIPS(Checkpoint):
'''Subclass for transfer IPS checkpoint'''
@@ -316,6 +335,9 @@
self._add_mirror = []
self._image_args = {}
+ # list for holding package plans (publisher, package, version)
+ self._package_dict = {}
+
# publisher list to hold a reference between publishers and
# origins/mirrors
self.publisher_list = list()
@@ -727,6 +749,15 @@
"using the command:")
self.logger.info(" pkg info --license <pkg_fmri>")
+ # building up a collection of packages so we have
+ # the publisher and version info for each package
+ package_dict = {}
+ plan = self.api_inst.describe().get_changes()
+ for pkg_plan in plan:
+ fmri = PkgFmri(pkg_plan[1].__str__())
+ package_dict[fmri.get_name()] = fmri
+ self.prog_tracker.set_package_dict(package_dict)
+
# Execute the transfer action
self.api_inst.prepare()
self.api_inst.execute_plan()