usr/src/lib/install_ict/cleanup_cpio_install.py
author Drew Fisher <drew.fisher@oracle.com>
Tue, 09 Aug 2011 14:34:48 -0600
changeset 1380 2f3830b79568
parent 1161 5c1b6d445efc
child 1381 6a009cae3466
permissions -rw-r--r--
7072842 update install gate for pkg5 API version bump to 66 7076306 slim source needs a common import for pkg5 API number
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1041
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
     1
#!/usr/bin/python
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
     2
#
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
     3
# CDDL HEADER START
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
     4
#
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
     5
# The contents of this file are subject to the terms of the
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
     6
# Common Development and Distribution License (the "License").
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
     7
# You may not use this file except in compliance with the License.
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
     8
#
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
     9
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    10
# or http://www.opensolaris.org/os/licensing.
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    11
# See the License for the specific language governing permissions
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    12
# and limitations under the License.
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    13
#
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    14
# When distributing Covered Code, include this CDDL HEADER in each
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    15
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    16
# If applicable, add the following below this CDDL HEADER, with the
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    17
# fields enclosed by brackets "[]" replaced with your own identifying
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    18
# information: Portions Copyright [yyyy] [name of copyright owner]
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    19
#
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    20
# CDDL HEADER END
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    21
#
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    22
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    23
#
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    24
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    25
#
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    26
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    27
import os
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    28
import shutil
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    29
import sys
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    30
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    31
import pkg.client.api as api
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    32
import pkg.client.api_errors as api_errors
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    33
import pkg.client.progress as progress
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    34
import solaris_install.ict as ICT
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    35
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    36
from stat import S_IREAD, S_IRGRP, S_IROTH
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    37
1380
2f3830b79568 7072842 update install gate for pkg5 API version bump to 66
Drew Fisher <drew.fisher@oracle.com>
parents: 1161
diff changeset
    38
from solaris_install import PKG5_API_VERSION
1041
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    39
from solaris_install.data_object import ObjectNotFoundError
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    40
from solaris_install.transfer.info import Args
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    41
from solaris_install.transfer.info import CPIOSpec
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    42
from solaris_install.transfer.info import IPSSpec
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    43
from solaris_install.transfer.ips import RedirectIPSTrans
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    44
from solaris_install.transfer.info import Software
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    45
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    46
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    47
class CleanupCPIOInstall(ICT.ICTBaseClass):
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    48
    '''
1055
26f4df2e408e 6255 ICT - Use more flexible method, than install-finish to invoke ICT (fix pep8 )
Mary Ding <mary.ding@oracle.com>
parents: 1041
diff changeset
    49
       The CleanupCPIOInstall checkpoint performs clean up on the system after
26f4df2e408e 6255 ICT - Use more flexible method, than install-finish to invoke ICT (fix pep8 )
Mary Ding <mary.ding@oracle.com>
parents: 1041
diff changeset
    50
       a live CD install. This checkpoint performs the following when the
1041
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    51
       the execute method is called:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    52
       - Creates /etc/mnttab if it doesn't already exist and chmods it to the
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    53
         correct values
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    54
       - Removes files and directories that are not needed by the installed
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    55
         system
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    56
       - Remove miscellanous directory trees used as work areas during
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    57
         installation
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    58
       - Relocate configuration files from the save directory
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    59
       - Remove install-specific packages that are not needed by the installed
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    60
         system
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    61
       - Reset pkg(1) image UUID for preferred publisher
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    62
    '''
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    63
    def __init__(self, name):
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    64
        '''Initializes the class
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    65
           Parameters:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    66
               -name - this arg is required by the AbstractCheckpoint
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    67
        '''
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    68
        super(CleanupCPIOInstall, self).__init__(name)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    69
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    70
        self.cleanup_list = ['.livecd', '.volsetid', '.textinstall',
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    71
                             'etc/sysconfig/language', '.liveusb',
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    72
                             'a', 'bootcd_microroot']
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    73
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    74
    def execute(self, dry_run=False):
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    75
        '''
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    76
            The AbstractCheckpoint class requires this method
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    77
            in sub-classes.
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    78
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    79
            Parameters:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    80
            - the dry_run keyword paramater. The default value is False.
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    81
              If set to True, the log message describes the checkpoint tasks.
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    82
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    83
            Returns:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    84
            - Nothing
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    85
              On failure, errors raised are managed by the engine.
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    86
        '''
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    87
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    88
        # Variable used to store the result of a pkg api plan_uninstall
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    89
        pkg_rval = False
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    90
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    91
        # List to hold requested packages to be removed
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    92
        pkg_rm_node = []
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    93
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    94
        # Dictionary and lists used to hold the results of package info check
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    95
        # for packages in the list of packages requested for removal
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    96
        pkg_ret_info = {}
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    97
        pkgs_found = []
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    98
        pkgs_notfound = []
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    99
        pkgs_illegal = []
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   100
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   101
        # Variables used to check for valid packages
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   102
        info_local = True
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   103
        info_needed = api.PackageInfo.ALL_OPTIONS
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   104
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   105
        # The software node containing packages, directories and files that
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   106
        # need removal
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   107
        soft_list = None
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   108
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   109
        self.logger.debug('ICT current task: cleanup install')
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   110
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   111
        # parse_doc populates variables necessary to execute the checkpoint
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   112
        self.parse_doc()
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   113
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   114
        # Get the list of install specific items that need to be removed.
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   115
        # Check for both IPS packages and files and directories
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   116
        # If no items are designated, an empty list is returned.
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   117
        soft_list = self.doc.get_descendants(name=self.name,
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   118
                                             class_type=Software)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   119
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   120
        if soft_list:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   121
            soft_node = soft_list[0]
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   122
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   123
            # Get the list of install specific packages that need to
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   124
            # be removed.
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   125
            try:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   126
                pkg_rm_node = soft_node.get_children(class_type=IPSSpec)[0]
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   127
            except IndexError, err:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   128
                # No IPS packages have been specified
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   129
                pass
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   130
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   131
            # Get the list of install specific files that need to be removed.
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   132
            try:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   133
                file_rm_node = soft_node.get_children(class_type=CPIOSpec)[0]
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   134
                self.cleanup_list.extend(file_rm_node.contents)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   135
            except IndexError, err:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   136
                # No additional CPIO contents have been specified
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   137
                pass
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   138
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   139
        # Create the mnttab file
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   140
        self.logger.debug('Executing: Create /etc/mnttab file')
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   141
        if not dry_run:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   142
            mnttab = os.path.join(self.target_dir, ICT.MNTTAB)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   143
            mnttab_dir = os.path.dirname(mnttab)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   144
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   145
            # Create the directory that holds the mnttab file,
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   146
            # if it does not exist.
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   147
            if not os.access(mnttab_dir, os.F_OK):
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   148
                os.makedirs(mnttab_dir)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   149
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   150
            # Create the mnttab file if it does not exist.
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   151
            if not os.access(mnttab, os.F_OK):
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   152
                open(mnttab, 'w').close()
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   153
                os.chmod(mnttab, S_IREAD | S_IRGRP | S_IROTH)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   154
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   155
        # Remove and miscellaneous directories used as work areas
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   156
        self.logger.debug('Executing: Remove miscellaneous work directories '
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   157
                          'from /var/tmp')
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   158
        for root, dirs, files in os.walk(os.path.join(self.target_dir,
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   159
                                         'var/tmp'), topdown=False):
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   160
            for name in files:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   161
                self.logger.debug('Removing %s', name)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   162
                if not dry_run:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   163
                    os.unlink(os.path.join(root, name))
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   164
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   165
            for work_dir in dirs:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   166
                self.logger.debug('Removing %s', work_dir)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   167
                if not dry_run:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   168
                    os.rmdir(os.path.join(root, work_dir))
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   169
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   170
        self.logger.debug('Executing: Remove miscellaneous work directories '
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   171
                          'from /mnt')
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   172
        for root, dirs, files in os.walk(os.path.join(self.target_dir,
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   173
                                         'mnt'), topdown=False):
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   174
            for name in files:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   175
                self.logger.debug('Removing %s', name)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   176
                if not dry_run:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   177
                    os.unlink(os.path.join(root, name))
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   178
            for work_dir in dirs:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   179
                self.logger.debug('Removing %s', work_dir)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   180
                if not dry_run:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   181
                    os.rmdir(os.path.join(root, work_dir))
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   182
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   183
        # Relocate configuration files from the save directory
1055
26f4df2e408e 6255 ICT - Use more flexible method, than install-finish to invoke ICT (fix pep8 )
Mary Ding <mary.ding@oracle.com>
parents: 1041
diff changeset
   184
        savedir = os.path.join(self.target_dir, 'save')
1041
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   185
        if os.path.exists(savedir):
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   186
            self.logger.debug('Executing: Relocate configuration files')
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   187
            for root, dirs, files in os.walk(savedir, topdown=False):
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   188
                if not files:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   189
                    continue
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   190
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   191
                target = root.replace('/save', '')
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   192
                if not dry_run:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   193
                    if not os.access(target, os.F_OK):
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   194
                        os.makedirs(target, 0755)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   195
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   196
                for name in files:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   197
                    move_file = os.path.join(root, name)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   198
                    self.logger.debug('Moving %s to %s', move_file, target)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   199
                    if not dry_run:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   200
                        if os.access(os.path.join(target, name), os.F_OK):
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   201
                            self.logger.debug('%s exists at %s --skipping',
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   202
                                    name, target)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   203
                        else:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   204
                            shutil.copy2(move_file, target)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   205
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   206
        if not dry_run:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   207
            try:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   208
                api_inst = api.ImageInterface(self.target_dir,
1380
2f3830b79568 7072842 update install gate for pkg5 API version bump to 66
Drew Fisher <drew.fisher@oracle.com>
parents: 1161
diff changeset
   209
                               PKG5_API_VERSION,
1041
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   210
                               progress.CommandLineProgressTracker(),
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   211
                               None,
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   212
                               ICT.PKG_CLIENT_NAME)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   213
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   214
            except api_errors.VersionException, ips_err:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   215
                raise ValueError("The IPS API version specified, "
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   216
                                 + str(ips_err.received_version) +
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   217
                                 " does not agree with "
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   218
                                 "the expected version, "
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   219
                                 + str(ips_err.expected_version))
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   220
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   221
        # Remove install-specific packages that are not needed
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   222
        if pkg_rm_node and len(pkg_rm_node.contents) > 0:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   223
            self.logger.debug("Executing: Remove unneeded install-specific "
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   224
                              "packages")
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   225
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   226
            # Check that all of the packages are valid packages
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   227
            # before trying to uninstall them
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   228
            self.logger.debug('Validating the packages to be uninstalled '
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   229
                '%s', pkg_rm_node.contents)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   230
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   231
            if not dry_run:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   232
                try:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   233
                    pkg_ret_info = api_inst.info(pkg_rm_node.contents,
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   234
                                                 info_local,
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   235
                                                 info_needed)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   236
                except api_errors.NoPackagesInstalledException:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   237
                    self.logger.debug("no packages from the uninstall list "
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   238
                                      "are installed")
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   239
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   240
                if pkg_ret_info:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   241
                    pkgs_found = pkg_ret_info[api.ImageInterface.INFO_FOUND]
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   242
                    pkgs_notfound = pkg_ret_info[
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   243
                                    api.ImageInterface.INFO_MISSING]
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   244
                    pkgs_illegal = pkg_ret_info[
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   245
                                   api.ImageInterface.INFO_ILLEGALS]
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   246
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   247
                    for notfound in pkgs_notfound:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   248
                        self.logger.debug("'%s' is not installed - skipping"
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   249
                                          % notfound)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   250
                        pkg_rm_node.contents.remove(notfound)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   251
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   252
                    for illegal in pkgs_illegal:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   253
                        self.logger.debug("'%s' is not a legal package for "
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   254
                                          "this install image - skipping"
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   255
                                          % illegal)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   256
                        pkg_rm_node.contents.remove(illegal)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   257
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   258
            # Uninstall the packages
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   259
            if not pkgs_found:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   260
                self.logger.debug('No packages to uninstall')
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   261
            else:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   262
                self.logger.debug('Uninstalling the packages...')
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   263
                self.logger.debug('%s', pkg_rm_node.contents)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   264
                if not dry_run:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   265
                    # Reset the value to false
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   266
                    pkg_rval = False
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   267
                    try:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   268
                        pkg_args = pkg_rm_node.get_first_child(
1161
5c1b6d445efc 7048838 update CLIENT_API_VERSION and remove 'recursive_removal' from install libraries
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   269
                            Args.ARGS_LABEL, Args)
1041
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   270
                    except ObjectNotFoundError, err:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   271
                        # No package arguments have been defined
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   272
                        pass
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   273
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   274
                    if pkg_args:
1161
5c1b6d445efc 7048838 update CLIENT_API_VERSION and remove 'recursive_removal' from install libraries
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   275
                        pkg_rval = api_inst.gen_plan_uninstall(
5c1b6d445efc 7048838 update CLIENT_API_VERSION and remove 'recursive_removal' from install libraries
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   276
                            pkg_rm_node.contents, **pkg_args.arg_dict)
1041
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   277
                    else:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   278
                        pkg_rval = api_inst.plan_uninstall(
1161
5c1b6d445efc 7048838 update CLIENT_API_VERSION and remove 'recursive_removal' from install libraries
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   279
                            pkg_rm_node.contents)
1041
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   280
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   281
                # Redirect stdout and stderr from the pkg image in order
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   282
                # to capture the command line output from the pkg
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   283
                # progress tracker into the transfer logs.
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   284
                if pkg_rval:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   285
                    tmp_stdout = sys.stdout
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   286
                    tmp_stderr = sys.stderr
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   287
                    sys.stdout = sys.stderr = RedirectIPSTrans(self.logger)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   288
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   289
                    api_inst.prepare()
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   290
                    api_inst.execute_plan()
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   291
                    api_inst.reset()
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   292
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   293
                    # Release stdout and stderr
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   294
                    sys.stdout = tmp_stdout
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   295
                    sys.stderr = tmp_stderr
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   296
                else:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   297
                    self.logger.debug('Unable to uninstall install specific '
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   298
                                      'packages')
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   299
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   300
        # Reset the pkg(1) image UUID to the preferred publisher
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   301
        self.logger.debug('Executing: Setting the UUID to the preferred '
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   302
                          'publisher')
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   303
        if not dry_run:
1099
9685582c2e8a 7039499 Need to change slim_source for IPS API_VERSION change of 57 for snv_165
Drew Fisher <drew.fisher@oracle.com>
parents: 1055
diff changeset
   304
            publisher = api_inst.get_highest_ranked_publisher()
1041
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   305
            publisher.reset_client_uuid()
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   306
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   307
        # Remove the files and directories in the cleanup_list
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   308
        self.logger.debug('Executing: Cleanup of %s', self.cleanup_list)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   309
        for cleanup_name in self.cleanup_list:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   310
            cleanup = os.path.join(self.target_dir, cleanup_name)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   311
            self.logger.debug("Removing %s", cleanup)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   312
            if not dry_run:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   313
                if os.access(cleanup, os.F_OK):
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   314
                    if os.path.isfile(cleanup):
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   315
                        os.unlink(cleanup)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   316
                    else:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   317
                        os.rmdir(cleanup)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   318
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   319
    def get_progress_estimate(self):
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   320
        '''
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   321
            The AbstractCheckpoint class requires this method
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   322
            in sub-classes.
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   323
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   324
            This returns an estimate of how long the execute() method
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   325
            will take to run.
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   326
        '''
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   327
        #XXXThis needs to be determined more accurately
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   328
        return 60