usr/src/lib/install_ict/ips.py
author Ethan Quach <Ethan.Quach@sun.com>
Tue, 31 May 2011 14:21:09 -0700
changeset 1160 6f7e708c38ec
parent 1041 7e44b50b28cb
permissions -rw-r--r--
16257 Support for zones configuration and installation should be included in AI 7041915 TransferFiles ICT should support transferring a directory that is more than one level deep. 7049824 System installed via AI ends up with incorrect mountpoints for shared ZFS datasets
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
1160
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1041
diff changeset
    27
import os
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1041
diff changeset
    28
1041
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    29
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
    30
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
    31
import pkg.client.image as image
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    32
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    33
from solaris_install.engine import InstallEngine
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    34
from solaris_install.engine.checkpoint import AbstractCheckpoint
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    35
from solaris_install.target import Target
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    36
from solaris_install.target.logical import BE
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    37
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    38
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    39
class SetFlushContentCache(ICT.ICTBaseClass):
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    40
    '''ICT checkpoint to flush the IPS content cache.
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    41
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    42
        The SetFlushContentCache restores the original IPS default to not purge
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    43
        the IPS download cache.
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    44
    '''
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    45
    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
    46
        '''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
    47
           Parameters:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    48
               -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
    49
        '''
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    50
        super(SetFlushContentCache, 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
    51
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    52
    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
    53
        '''
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    54
            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
    55
            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
    56
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    57
            Parameters:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    58
            - 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
    59
              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
    60
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    61
            Returns:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    62
            - Nothing
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    63
              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
    64
        '''
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    65
        self.logger.debug('ICT current task: Set IPS '
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    66
                          'flush-content-cache-on-success')
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
        # 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
    69
        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
    70
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    71
        # Restore the original IPS default and
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    72
        # set purging the IPS download cache to "False"
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    73
        self.logger.debug('Executing: Set IPS flush-content-cache-on-success '
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    74
                          'to False')
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    75
        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
    76
            try:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    77
                img = image.Image(root=self.target_dir, user_provided_dir=True)
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    78
                img.set_property('flush-content-cache-on-success', 'False')
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    79
            except api_errors.ImageNotFoundException, err:
7e44b50b28cb 6255:ICT - Use more flexible method, than install-finish to invoke ICT
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    80
                self.logger.debug("No IPS image found at install target")
1160
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1041
diff changeset
    81
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1041
diff changeset
    82
            # The above call will end up leaving our process's cwd
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1041
diff changeset
    83
            # in the image's root area, which will cause pain later
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1041
diff changeset
    84
            # on in trying to unmount the image.  So we manually
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1041
diff changeset
    85
            # change dir back to "/".
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1041
diff changeset
    86
            os.chdir("/")