usr/src/lib/install_transfer/ips.py
author Dan Price <daniel.price@oracle.com>
Tue, 19 Jun 2012 15:59:08 -0700
changeset 1721 4ee0239d9a9f
parent 1709 ee7123806386
child 1723 d23bbc08f2ac
permissions -rw-r--r--
7176734 adjust for new IPS progress module API
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
947
29603af1b942 6999599 Missing shebang lines in python modules leads to incorrect dependency generation
Keith Mitchell <keith.mitchell@oracle.com>
parents: 942
diff changeset
     1
#!/usr/bin/python
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
     2
#
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
     3
# CDDL HEADER START
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
     4
#
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
     5
# The contents of this file are subject to the terms of the
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
     6
# Common Development and Distribution License (the "License").
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
     7
# You may not use this file except in compliance with the License.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
     8
#
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
     9
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    10
# or http://www.opensolaris.org/os/licensing.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    11
# See the License for the specific language governing permissions
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    12
# and limitations under the License.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    13
#
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    14
# When distributing Covered Code, include this CDDL HEADER in each
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    15
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    16
# If applicable, add the following below this CDDL HEADER, with the
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    17
# fields enclosed by brackets "[]" replaced with your own identifying
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    18
# information: Portions Copyright [yyyy] [name of copyright owner]
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    19
#
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    20
# CDDL HEADER END
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    21
#
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    22
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    23
#
1599
118f135d9d1e 7143246 pylint errors in solaris_install/transfer
Mary Ding <mary.ding@oracle.com>
parents: 1454
diff changeset
    24
# Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    25
#
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    26
'''Transfer IPS checkpoint. Sub-class of the checkpoint class'''
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    27
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    28
import abc
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    29
import copy
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    30
import gettext
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    31
import locale
1721
4ee0239d9a9f 7176734 adjust for new IPS progress module API
Dan Price <daniel.price@oracle.com>
parents: 1709
diff changeset
    32
import logging
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    33
import os
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    34
import shutil
1721
4ee0239d9a9f 7176734 adjust for new IPS progress module API
Dan Price <daniel.price@oracle.com>
parents: 1709
diff changeset
    35
import sys
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    36
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    37
import pkg.client.api as api
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    38
import pkg.client.api_errors as api_errors
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    39
import pkg.client.image as image
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    40
import pkg.client.progress as progress
1721
4ee0239d9a9f 7176734 adjust for new IPS progress module API
Dan Price <daniel.price@oracle.com>
parents: 1709
diff changeset
    41
import pkg.client.printengine as printengine
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    42
import pkg.client.publisher as publisher
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    43
import pkg.misc as misc
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    44
1706
bfbbe94a121d 7125955 install_transfer/ips module should log more info about the packages being installed into the image
Geoffrey Hart <geoffrey.hart@oracle.com>
parents: 1692
diff changeset
    45
from pkg.fmri import PkgFmri
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    46
from pkg.client import global_settings
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    47
from pkg.client.api import IMG_TYPE_ENTIRE, IMG_TYPE_PARTIAL
1380
2f3830b79568 7072842 update install gate for pkg5 API version bump to 66
Drew Fisher <drew.fisher@oracle.com>
parents: 1373
diff changeset
    48
from solaris_install import PKG5_API_VERSION
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    49
from solaris_install.engine.checkpoint import AbstractCheckpoint as Checkpoint
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    50
from solaris_install.engine import InstallEngine
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    51
from solaris_install.transfer.info import Args
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    52
from solaris_install.transfer.info import Destination
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    53
from solaris_install.transfer.info import Facet
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    54
from solaris_install.transfer.info import Image
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    55
from solaris_install.transfer.info import ImType
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    56
from solaris_install.transfer.info import IPSSpec
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    57
from solaris_install.transfer.info import Mirror
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    58
from solaris_install.transfer.info import Origin
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    59
from solaris_install.transfer.info import Property
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    60
from solaris_install.transfer.info import Publisher
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    61
from solaris_install.transfer.info import Software
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    62
from solaris_install.transfer.info import Source
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    63
from solaris_install.transfer.info import ACTION, CONTENTS, \
1650
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
    64
PURGE_HISTORY, APP_CALLBACK, IPS_ARGS, UPDATE_INDEX, REJECT_LIST
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    65
from solaris_install.transfer.prog import ProgressMon
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    66
1619
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
    67
LICENSE_ACCEPTED = "automatically accepted"
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
    68
LICENSE_NOT_DISP = "not displayed"
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
    69
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    70
PKG_CLIENT_NAME = "transfer module"
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    71
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    72
global_settings.client_name = PKG_CLIENT_NAME
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    73
misc.setlocale(locale.LC_ALL, "")
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    74
gettext.install("pkg", "/usr/share/locale")
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    75
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    76
class AbstractIPS(Checkpoint):
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    77
    '''Subclass for transfer IPS checkpoint'''
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    78
    __metaclass__ = abc.ABCMeta
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    79
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    80
    # Variables associated with the package image
942
0a70ee0305fa 7001344-A couple of transfer files got copied over incorrectly
Ginnie Wray<virginia.wray@oracle.com>
parents: 940
diff changeset
    81
    DEF_REPO_URI = "http://pkg.opensolaris.org/release"
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    82
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    83
    # Variables used in calculating the image size
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    84
    DEFAULT_PROG_EST = 10
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    85
    DEFAULT_SIZE = 1000
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    86
    DEFAULT_PKG_NUM = 5
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    87
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    88
    # Variables used to check system version info
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    89
    SYSTEM_IMAGE = "/"
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    90
    ENT_PKG = ["entire"]
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    91
    SYSTEM_CLIENT_NAME = "host"
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    92
    INFO_NEEDED = api.PackageInfo.ALL_OPTIONS
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    93
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    94
    # Action variables
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    95
    CREATE = "create"
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    96
    EXISTING = "use_existing"
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    97
    UPDATE = "update"
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
    98
1373
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
    99
    def __init__(self, name, zonename=None, show_stdout=False):
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   100
        super(AbstractIPS, self).__init__(name)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   101
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   102
        # attributes per image
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   103
        self.dst = None
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   104
        self.img_action = self.CREATE
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   105
        self.index = False
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   106
        self.src = None   # [(pub_name, [origin], [mirror])]
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   107
        self.image_args = {}
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   108
        self.completeness = IMG_TYPE_ENTIRE
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   109
        self.is_zone = False
1239
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   110
        self.zonename = zonename
1373
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   111
        self.show_stdout = show_stdout
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   112
        self.facets = {}
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   113
        self.properties = {}
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   114
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   115
        # To be used for progress reporting
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   116
        self.distro_size = 0
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   117
        self.give_progress = False
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   118
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   119
        # Handle for the progress monitor
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   120
        self.pmon = None
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   121
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   122
        # handle for the ips api
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   123
        self.api_inst = None
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   124
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   125
        # Determines whether a dry run occurs
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   126
        self.dry_run = False
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   127
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   128
        # Flag to cancel whatever action is going on.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   129
        self._cancel_event = False
1373
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   130
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   131
        # Set the progress tracker for IPS operations.
1721
4ee0239d9a9f 7176734 adjust for new IPS progress module API
Dan Price <daniel.price@oracle.com>
parents: 1709
diff changeset
   132
        trackers = []
1373
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   133
        if self.show_stdout:
1721
4ee0239d9a9f 7176734 adjust for new IPS progress module API
Dan Price <daniel.price@oracle.com>
parents: 1709
diff changeset
   134
            # Try to create a Fancy progress tracker.  If we're not running on a
4ee0239d9a9f 7176734 adjust for new IPS progress module API
Dan Price <daniel.price@oracle.com>
parents: 1709
diff changeset
   135
            # capable terminal, then bump the loglevel up to INFO.  This is a
4ee0239d9a9f 7176734 adjust for new IPS progress module API
Dan Price <daniel.price@oracle.com>
parents: 1709
diff changeset
   136
            # hack, but it will cause the log messages to appear on stdout
4ee0239d9a9f 7176734 adjust for new IPS progress module API
Dan Price <daniel.price@oracle.com>
parents: 1709
diff changeset
   137
            # and in the log file.
1373
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   138
            try:
1721
4ee0239d9a9f 7176734 adjust for new IPS progress module API
Dan Price <daniel.price@oracle.com>
parents: 1709
diff changeset
   139
                t = progress.FancyUNIXProgressTracker(output_file=sys.stdout)
4ee0239d9a9f 7176734 adjust for new IPS progress module API
Dan Price <daniel.price@oracle.com>
parents: 1709
diff changeset
   140
                trackers.append(t)
4ee0239d9a9f 7176734 adjust for new IPS progress module API
Dan Price <daniel.price@oracle.com>
parents: 1709
diff changeset
   141
                loglevel = logging.DEBUG
1373
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   142
            except progress.ProgressTrackerException:
1721
4ee0239d9a9f 7176734 adjust for new IPS progress module API
Dan Price <daniel.price@oracle.com>
parents: 1709
diff changeset
   143
                loglevel = logging.INFO
1373
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   144
        else:
1721
4ee0239d9a9f 7176734 adjust for new IPS progress module API
Dan Price <daniel.price@oracle.com>
parents: 1709
diff changeset
   145
            loglevel = logging.DEBUG
4ee0239d9a9f 7176734 adjust for new IPS progress module API
Dan Price <daniel.price@oracle.com>
parents: 1709
diff changeset
   146
4ee0239d9a9f 7176734 adjust for new IPS progress module API
Dan Price <daniel.price@oracle.com>
parents: 1709
diff changeset
   147
        # Set up the logging progress tracker-- this is a
4ee0239d9a9f 7176734 adjust for new IPS progress module API
Dan Price <daniel.price@oracle.com>
parents: 1709
diff changeset
   148
        # CommandLineProgressTracker hooked up to a special printengine.
4ee0239d9a9f 7176734 adjust for new IPS progress module API
Dan Price <daniel.price@oracle.com>
parents: 1709
diff changeset
   149
        pe = printengine.LoggingPrintEngine(self.logger, loglevel)
4ee0239d9a9f 7176734 adjust for new IPS progress module API
Dan Price <daniel.price@oracle.com>
parents: 1709
diff changeset
   150
        logt = progress.CommandLineProgressTracker(print_engine=pe)
4ee0239d9a9f 7176734 adjust for new IPS progress module API
Dan Price <daniel.price@oracle.com>
parents: 1709
diff changeset
   151
        trackers.append(logt)
4ee0239d9a9f 7176734 adjust for new IPS progress module API
Dan Price <daniel.price@oracle.com>
parents: 1709
diff changeset
   152
4ee0239d9a9f 7176734 adjust for new IPS progress module API
Dan Price <daniel.price@oracle.com>
parents: 1709
diff changeset
   153
        self.prog_tracker = progress.MultiProgressTracker(trackers)
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   154
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   155
        # local attributes used to create the publisher.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   156
        self._publ = None
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   157
        self._origin = []
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   158
        self._mirror = []
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   159
        self._add_publ = []
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   160
        self._add_origin = []
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   161
        self._add_mirror = []
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   162
        self._image_args = {}
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   163
1706
bfbbe94a121d 7125955 install_transfer/ips module should log more info about the packages being installed into the image
Geoffrey Hart <geoffrey.hart@oracle.com>
parents: 1692
diff changeset
   164
        # list for holding package plans (publisher, package, version)
bfbbe94a121d 7125955 install_transfer/ips module should log more info about the packages being installed into the image
Geoffrey Hart <geoffrey.hart@oracle.com>
parents: 1692
diff changeset
   165
        self._package_dict = {}
bfbbe94a121d 7125955 install_transfer/ips module should log more info about the packages being installed into the image
Geoffrey Hart <geoffrey.hart@oracle.com>
parents: 1692
diff changeset
   166
1092
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   167
        # publisher list to hold a reference between publishers and
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   168
        # origins/mirrors
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   169
        self.publisher_list = list()
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   170
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   171
        # List to hold dictionaries of transfer actions
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   172
        self._transfer_list = []
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   173
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   174
    def get_size(self):
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   175
        '''Compute the size of the transfer specified.'''
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   176
        self._parse_input()
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   177
        self._validate_input()
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   178
        num_pkgs = 0
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   179
        for trans in self._transfer_list:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   180
            num_pkgs += len(trans.get(CONTENTS))
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   181
        return self.DEFAULT_SIZE * (num_pkgs / self.DEFAULT_PKG_NUM)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   182
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   183
    def get_progress_estimate(self):
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   184
        '''Returns an estimate of the time this checkpoint will
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   185
           take.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   186
        '''
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   187
        if self.distro_size == 0:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   188
            self.distro_size = self.get_size()
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   189
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   190
        progress_estimate = \
1049
d4eefe3ca0fd 7032666 Problems with progress reporting in transfer checkpoint
Karen Tung <karen.tung@oracle.com>
parents: 1025
diff changeset
   191
            int((float(self.distro_size) / self.DEFAULT_SIZE) * \
d4eefe3ca0fd 7032666 Problems with progress reporting in transfer checkpoint
Karen Tung <karen.tung@oracle.com>
parents: 1025
diff changeset
   192
                self.DEFAULT_PROG_EST)
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   193
        self.give_progress = True
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   194
        return progress_estimate
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   195
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   196
    def cancel(self):
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   197
        '''Cancel the transfer in progress'''
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   198
        self._cancel_event = True
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   199
        if self.api_inst:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   200
            self.api_inst.cancel()
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   201
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   202
    def execute(self, dry_run=False):
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   203
        '''Execute method for the IPS checkpoint module. Will read the
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   204
           input parameters and perform the specified transfer.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   205
        '''
1373
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   206
        self.logger.debug("=== Executing %s Checkpoint ===" % self.name)
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   207
        try:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   208
            if self.give_progress:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   209
                self.logger.report_progress("Beginning IPS transfer", 0)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   210
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   211
            self.dry_run = dry_run
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   212
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   213
            # Read the parameters from the DOC and put into the
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   214
            # local attributes.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   215
            self._parse_input()
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   216
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   217
            # Validate the attributes
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   218
            self._validate_input()
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   219
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   220
            # Get the handle to the IPS image api.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   221
            if not self.dry_run:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   222
                self.get_ips_api_inst()
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   223
1373
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   224
            # Perform the transferring of the bit/updating of the image.
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   225
            self._transfer()
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   226
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   227
            if not self.dry_run:
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   228
                # Check to see that the entire package on the host system
1373
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   229
                # matches the package in the target image, if the entire
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   230
                # package is included in the package list.  Log a warning
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   231
                # message if the versions don't match.
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   232
                # If it isn't found in the package list or on the system,
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   233
                # this isn't an error. Continue with the installation.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   234
                for trans_val in self._transfer_list:
942
0a70ee0305fa 7001344-A couple of transfer files got copied over incorrectly
Ginnie Wray<virginia.wray@oracle.com>
parents: 940
diff changeset
   235
                    if trans_val.get(ACTION) == "install":
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   236
                        for pkg in trans_val.get(CONTENTS):
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   237
                            if "entire" in pkg:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   238
                                sysinst = api.ImageInterface(self.SYSTEM_IMAGE,
1380
2f3830b79568 7072842 update install gate for pkg5 API version bump to 66
Drew Fisher <drew.fisher@oracle.com>
parents: 1373
diff changeset
   239
                                                       PKG5_API_VERSION,
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   240
                                                       self.prog_tracker,
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   241
                                                       False,
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   242
                                                       self.SYSTEM_CLIENT_NAME)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   243
1373
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   244
                                installer_entire_info = \
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   245
                                     sysinst.info(fmri_strings=self.ENT_PKG,
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   246
                                                  local=True,
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   247
                                                  info_needed=self.INFO_NEEDED)
1373
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   248
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   249
                                target_entire_info = self.api_inst.info(
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   250
                                                  fmri_strings=self.ENT_PKG,
1373
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   251
                                                  local=True,
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   252
                                                  info_needed=self.INFO_NEEDED)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   253
1373
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   254
                                if not installer_entire_info[
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   255
                                    api.ImageInterface.INFO_FOUND] or \
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   256
                                    not target_entire_info[
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   257
                                    api.ImageInterface.INFO_FOUND]:
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   258
                                    continue
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   259
1373
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   260
                                installer_entire_pi = \
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   261
                                    installer_entire_info[ \
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   262
                                        api.ImageInterface.INFO_FOUND][0]
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   263
                                target_entire_pi = \
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   264
                                    target_entire_info[ \
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   265
                                        api.ImageInterface.INFO_FOUND][0]
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   266
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   267
                                if installer_entire_pi.branch != \
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   268
                                    target_entire_pi.branch:
942
0a70ee0305fa 7001344-A couple of transfer files got copied over incorrectly
Ginnie Wray<virginia.wray@oracle.com>
parents: 940
diff changeset
   269
                                    self.logger.warning("Version mismatch: ")
1373
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   270
                                    self.logger.warning(
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   271
                                        "Installer build version: %s" %
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   272
                                        (installer_entire_pi.fmri))
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   273
                                    self.logger.warning(
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   274
                                        "Target build version: %s" %
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   275
                                        (target_entire_pi.fmri))
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   276
            self.check_cancel_event()
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   277
1389
39e1a166f0c6 7057702 AI installer should catch CatalogRefreshException exceptions and print it's contents on error
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1380
diff changeset
   278
        except api_errors.CatalogRefreshException, cre:
1680
902e7dbd8043 7155706 pylint errors in usr/src/lib/install_transfer/ips.py
Mary Ding <mary.ding@oracle.com>
parents: 1650
diff changeset
   279
            #  Handle CatalogRefreshException especially since it doesn't
902e7dbd8043 7155706 pylint errors in usr/src/lib/install_transfer/ips.py
Mary Ding <mary.ding@oracle.com>
parents: 1650
diff changeset
   280
            #  pretty-print it's contents in a __str__() impl.
1692
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   281
1389
39e1a166f0c6 7057702 AI installer should catch CatalogRefreshException exceptions and print it's contents on error
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1380
diff changeset
   282
            raise RuntimeError(self.catalog_failures_to_str(cre))
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   283
        finally:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   284
            self._cleanup()
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   285
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   286
    @abc.abstractmethod
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   287
    def _parse_input(self):
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   288
        '''This method is required to be implemented by all subclasses.'''
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   289
        raise NotImplementedError
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   290
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   291
    def _validate_input(self):
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   292
        '''Do whatever validation is necessary on the attributes.'''
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   293
        self.logger.debug("Validating IPS input")
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   294
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   295
        # dst is required
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   296
        if self.dst is None:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   297
            raise ValueError("IPS destination must be specified")
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   298
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   299
        if self.img_action not in (self.EXISTING, self.CREATE, self.UPDATE):
1025
7daf8a6d0a61 7023927 Need fix to take care of pep8audit tests failure for solaris_install/transfer
Mary Ding <mary.ding@oracle.com>
parents: 1012
diff changeset
   300
            raise ValueError("The IPS action is not valid: %s" %
7daf8a6d0a61 7023927 Need fix to take care of pep8audit tests failure for solaris_install/transfer
Mary Ding <mary.ding@oracle.com>
parents: 1012
diff changeset
   301
                              self.img_action)
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   302
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   303
        self.logger.debug("Destination: %s", self.dst)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   304
        self.logger.debug("Image action: %s", self.img_action)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   305
        if self.completeness == "full":
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   306
            self.completeness = IMG_TYPE_ENTIRE
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   307
            self.logger.debug("Image Type: full")
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   308
        elif self.completeness == "partial":
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   309
            self.completeness = IMG_TYPE_PARTIAL
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   310
            self.logger.debug("Image Type: partial")
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   311
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   312
        if self.is_zone:
1373
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   313
            self.logger.debug("Image Variant: zone")
1239
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   314
            # For images of type zone, we need the zonename so that
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   315
            # we can construct the linked image name when attaching
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   316
            # it to the parent image.
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   317
            if not self.zonename:
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   318
                raise ValueError("For images of type 'zone', a zonename "
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   319
                                 "must be provided.")
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   320
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   321
        not_allowed = set(["prefix", "repo_uri", "origins", "mirrors"])
942
0a70ee0305fa 7001344-A couple of transfer files got copied over incorrectly
Ginnie Wray<virginia.wray@oracle.com>
parents: 940
diff changeset
   322
        img_args = set(self.image_args.keys())
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   323
        overlap = list(not_allowed & img_args)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   324
        if overlap:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   325
            raise ValueError("The following components may be specified "
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   326
                             "with the source component of the manifest but "
942
0a70ee0305fa 7001344-A couple of transfer files got copied over incorrectly
Ginnie Wray<virginia.wray@oracle.com>
parents: 940
diff changeset
   327
                             "are invalid as args: " + str(overlap))
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   328
1373
06749bba0075 7052074 zones autoinstall needs more fine-grained progress reporting
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1350
diff changeset
   329
        self.prog_tracker = self.image_args.get("progtrack", self.prog_tracker)
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   330
1692
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   331
        invalid_prefix_uri = None
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   332
        if self.img_action == self.CREATE:
1692
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   333
            # Set the image args we always want set.
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   334
            self.set_image_args()
1692
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   335
        elif not self.dry_run and not self._publ:
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   336
            # It's either None or empty string, so fail
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   337
            # Should always have index 0 since DTD won't allow otherwise, but
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   338
            # should ignore in case of dry_run since unlikely to be set.
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   339
            invalid_prefix_uri = self._origin[0]
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   340
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   341
        if invalid_prefix_uri is None:
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   342
            for idx, element in enumerate(self._add_publ):
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   343
                if not element:
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   344
                    # It's either None or empty string, so fail
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   345
                    # Should always have index 0 since DTD won't allow
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   346
                    # otherwise.
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   347
                    invalid_prefix_uri = self._add_origin[idx][0]
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   348
                    break
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   349
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   350
        if invalid_prefix_uri is not None:
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   351
            raise ValueError(
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   352
                "Only the publisher being used for image creation can have\n"
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   353
                "its prefix auto-discovered, please specify the prefix for\n"
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   354
                "the publisher with the URI:\n  %s"
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   355
                % invalid_prefix_uri)
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   356
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   357
    def _transfer(self):
1101
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   358
        '''If an update of the image has been specified, the publishers of the
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   359
           existing image are examined.  If a matching publisher is found, the
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   360
           origins and mirrors (if present) are reset to the desired entries.
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   361
           All other publishers in the image are removed and the new additional
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   362
           publishers are added.  Then properties are set, if specified and the
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   363
           transfer specific operations of install, uninstall and purge history
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   364
           are performed.
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   365
           If creation of the image has been specified, the additional
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   366
           publishers are added to the image, properties are set and the
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   367
           transfer specific operations of install, uninstall and purge history
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   368
           are performed.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   369
        '''
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   370
        if self.give_progress and self.distro_size != 0:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   371
            # Start up the ProgressMon to report progress
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   372
            # while the actual transfer is taking place.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   373
            self.pmon = ProgressMon(logger=self.logger)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   374
            self.pmon.startmonitor(self.dst, self.distro_size, 0, 100)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   375
1092
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   376
        if self.img_action == self.EXISTING and self._publ \
942
0a70ee0305fa 7001344-A couple of transfer files got copied over incorrectly
Ginnie Wray<virginia.wray@oracle.com>
parents: 940
diff changeset
   377
           and not self.dry_run:
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   378
            # See what publishers/origins/mirrors we have
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   379
            self.logger.debug("Updating the publishers")
942
0a70ee0305fa 7001344-A couple of transfer files got copied over incorrectly
Ginnie Wray<virginia.wray@oracle.com>
parents: 940
diff changeset
   380
            pub_list = self.api_inst.get_publishers(duplicate=True)
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   381
1092
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   382
            self.logger.info("Setting post-install publishers to:")
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   383
            self.print_repository_uris()
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   384
1101
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   385
            # Look to see if the publisher in _publ is already in the Image
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   386
            if self.api_inst.has_publisher(prefix=self._publ):
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   387
                # update the publisher
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   388
                pub = self.api_inst.get_publisher(prefix=self._publ,
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   389
                                                  duplicate=True)
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   390
                self.logger.debug("Updating publisher information for " \
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   391
                                  "%s" % str(self._publ))
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   392
                repository = pub.repository
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   393
                repository.reset_origins()
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   394
                repository.reset_mirrors()
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   395
                for origin in self._origin:
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   396
                    repository.add_origin(origin)
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   397
                if self._mirror is not None:
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   398
                    for mirror in self._mirror:
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   399
                        repository.add_mirror(mirror)
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   400
                self.api_inst.update_publisher(pub=pub, refresh_allowed=False,
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   401
                                               search_first=True)
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   402
            else:
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   403
                # create a new publisher and set it to the highest ranked
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   404
                # publisher
942
0a70ee0305fa 7001344-A couple of transfer files got copied over incorrectly
Ginnie Wray<virginia.wray@oracle.com>
parents: 940
diff changeset
   405
                if self._mirror:
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: 1092
diff changeset
   406
                    repo = publisher.Repository(mirrors=self._mirror,
9685582c2e8a 7039499 Need to change slim_source for IPS API_VERSION change of 57 for snv_165
Drew Fisher <drew.fisher@oracle.com>
parents: 1092
diff changeset
   407
                                                origins=self._origin)
942
0a70ee0305fa 7001344-A couple of transfer files got copied over incorrectly
Ginnie Wray<virginia.wray@oracle.com>
parents: 940
diff changeset
   408
                else:
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: 1092
diff changeset
   409
                    repo = publisher.Repository(origins=self._origin)
9685582c2e8a 7039499 Need to change slim_source for IPS API_VERSION change of 57 for snv_165
Drew Fisher <drew.fisher@oracle.com>
parents: 1092
diff changeset
   410
                pub = publisher.Publisher(prefix=self._publ, repository=repo)
1101
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   411
                self.api_inst.add_publisher(pub=pub, refresh_allowed=False,
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   412
                                            search_first=True)
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   413
1101
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   414
            # the highest ranking publisher has been set.  Walk the other
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   415
            # publishers in the list and remove them.
30df8e9b5f27 7040795 install fails with setting preferred publisher errors after fix for 7039499 is integrated
Drew Fisher <drew.fisher@oracle.com>
parents: 1099
diff changeset
   416
            for pub in self.api_inst.get_publishers(duplicate=True)[1:]:
942
0a70ee0305fa 7001344-A couple of transfer files got copied over incorrectly
Ginnie Wray<virginia.wray@oracle.com>
parents: 940
diff changeset
   417
                self.api_inst.remove_publisher(prefix=pub.prefix)
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   418
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   419
        # Add specified publishers/origins/mirrors to the image.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   420
        for idx, element in enumerate(self._add_publ):
1174
2e24c69f77d0 7050248 Additional 49 install unit test failure after zones AI putback
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1169
diff changeset
   421
            # If this publisher doesn't already exist, add it.  (In dry_run
2e24c69f77d0 7050248 Additional 49 install unit test failure after zones AI putback
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1169
diff changeset
   422
            # mode, api_inst is not initialized so always add these publishers
2e24c69f77d0 7050248 Additional 49 install unit test failure after zones AI putback
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1169
diff changeset
   423
            # as additionals because we know they won't be pre-existing.)
2e24c69f77d0 7050248 Additional 49 install unit test failure after zones AI putback
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1169
diff changeset
   424
            if self.dry_run or not self.api_inst.has_publisher(prefix=element):
1160
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   425
                self.logger.debug("Adding additional publisher %s" % \
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   426
                                  str(element))
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   427
                if self._add_mirror[idx]:
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   428
                    repo = publisher.Repository(mirrors=self._add_mirror[idx],
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   429
                                                origins=self._add_origin[idx])
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   430
                else:
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   431
                    repo = publisher.Repository(origins=self._add_origin[idx])
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   432
                pub = publisher.Publisher(prefix=element, repository=repo)
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   433
                if not self.dry_run:
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   434
                    self.api_inst.add_publisher(pub=pub, refresh_allowed=False)
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   435
            # Else update the existing publisher with this spec
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   436
            else:
1160
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   437
                self.logger.debug("Updating publisher information for " \
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   438
                                  "%s" % str(element))
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   439
                pub = self.api_inst.get_publisher(prefix=element,
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   440
                                                  duplicate=True)
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   441
                repository = pub.repository
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   442
                if self._add_origin[idx]:
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   443
                    for origin in self._add_origin[idx]:
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   444
                        if not repository.has_origin(origin):
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   445
                            repository.add_origin(origin)
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   446
                if self._add_mirror[idx]:
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   447
                    for mirror in self._add_mirror[idx]:
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   448
                        if not repository.has_mirror(mirror):
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   449
                            repository.add_mirror(mirror)
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   450
                self.api_inst.update_publisher(pub=pub, refresh_allowed=False)
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   451
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   452
        # Get the publisher information of what the image is set with now.
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   453
        # Re-set publisher_list to that list, so that it can be used later
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   454
        # to be printed out
1174
2e24c69f77d0 7050248 Additional 49 install unit test failure after zones AI putback
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1169
diff changeset
   455
        if not self.dry_run:
2e24c69f77d0 7050248 Additional 49 install unit test failure after zones AI putback
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1169
diff changeset
   456
            pub_list = self.api_inst.get_publishers(duplicate=True)
2e24c69f77d0 7050248 Additional 49 install unit test failure after zones AI putback
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1169
diff changeset
   457
            pub_list_for_print = list()
2e24c69f77d0 7050248 Additional 49 install unit test failure after zones AI putback
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1169
diff changeset
   458
            for pub in pub_list:
2e24c69f77d0 7050248 Additional 49 install unit test failure after zones AI putback
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1169
diff changeset
   459
                repo = pub.repository
2e24c69f77d0 7050248 Additional 49 install unit test failure after zones AI putback
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1169
diff changeset
   460
                origin_uris = list()
2e24c69f77d0 7050248 Additional 49 install unit test failure after zones AI putback
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1169
diff changeset
   461
                mirror_uris = list()
2e24c69f77d0 7050248 Additional 49 install unit test failure after zones AI putback
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1169
diff changeset
   462
                if repo.origins:
2e24c69f77d0 7050248 Additional 49 install unit test failure after zones AI putback
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1169
diff changeset
   463
                    for origin in repo.origins:
2e24c69f77d0 7050248 Additional 49 install unit test failure after zones AI putback
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1169
diff changeset
   464
                        origin_uris.append(origin.uri)
2e24c69f77d0 7050248 Additional 49 install unit test failure after zones AI putback
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1169
diff changeset
   465
                if repo.mirrors:
2e24c69f77d0 7050248 Additional 49 install unit test failure after zones AI putback
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1169
diff changeset
   466
                    for mirror in repo.mirrors:
2e24c69f77d0 7050248 Additional 49 install unit test failure after zones AI putback
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1169
diff changeset
   467
                        mirror_uris.append(mirror.uri)
2e24c69f77d0 7050248 Additional 49 install unit test failure after zones AI putback
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1169
diff changeset
   468
                pub_list_for_print.append((pub.prefix, origin_uris,
2e24c69f77d0 7050248 Additional 49 install unit test failure after zones AI putback
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1169
diff changeset
   469
                    mirror_uris))
2e24c69f77d0 7050248 Additional 49 install unit test failure after zones AI putback
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1169
diff changeset
   470
            self.publisher_list = pub_list_for_print
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   471
942
0a70ee0305fa 7001344-A couple of transfer files got copied over incorrectly
Ginnie Wray<virginia.wray@oracle.com>
parents: 940
diff changeset
   472
        if self.dry_run:
0a70ee0305fa 7001344-A couple of transfer files got copied over incorrectly
Ginnie Wray<virginia.wray@oracle.com>
parents: 940
diff changeset
   473
            self.logger.debug("Dry Run: publishers updated")
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   474
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   475
        self.check_cancel_event()
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   476
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: 1092
diff changeset
   477
        if self.properties and not self.dry_run:
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   478
            # Update properties if needed.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   479
            self.logger.debug("Updating image properties")
1235
fea9874bba56 7059924 All 5 DC isos double in size in snv_169 and livecd install fails since / ran out of room.
Drew Fisher <drew.fisher@oracle.com>
parents: 1174
diff changeset
   480
            img = self.api_inst.img
942
0a70ee0305fa 7001344-A couple of transfer files got copied over incorrectly
Ginnie Wray<virginia.wray@oracle.com>
parents: 940
diff changeset
   481
            for prop in self.properties.keys():
0a70ee0305fa 7001344-A couple of transfer files got copied over incorrectly
Ginnie Wray<virginia.wray@oracle.com>
parents: 940
diff changeset
   482
                if prop == "preferred-publisher":
0a70ee0305fa 7001344-A couple of transfer files got copied over incorrectly
Ginnie Wray<virginia.wray@oracle.com>
parents: 940
diff changeset
   483
                    # Can't set preferred-publisher via set_property, you
0a70ee0305fa 7001344-A couple of transfer files got copied over incorrectly
Ginnie Wray<virginia.wray@oracle.com>
parents: 940
diff changeset
   484
                    # must use set_preferred_publisher
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: 1092
diff changeset
   485
                    img.set_highest_ranked_publisher(
942
0a70ee0305fa 7001344-A couple of transfer files got copied over incorrectly
Ginnie Wray<virginia.wray@oracle.com>
parents: 940
diff changeset
   486
                        prefix=self.properties[prop])
0a70ee0305fa 7001344-A couple of transfer files got copied over incorrectly
Ginnie Wray<virginia.wray@oracle.com>
parents: 940
diff changeset
   487
                else:
0a70ee0305fa 7001344-A couple of transfer files got copied over incorrectly
Ginnie Wray<virginia.wray@oracle.com>
parents: 940
diff changeset
   488
                    if isinstance(self.properties[prop], bool):
0a70ee0305fa 7001344-A couple of transfer files got copied over incorrectly
Ginnie Wray<virginia.wray@oracle.com>
parents: 940
diff changeset
   489
                        self.properties[prop] = str(self.properties[prop])
0a70ee0305fa 7001344-A couple of transfer files got copied over incorrectly
Ginnie Wray<virginia.wray@oracle.com>
parents: 940
diff changeset
   490
                    img.set_property(prop, self.properties[prop])
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   491
1650
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   492
        # Refresh publishers now that we've set the publishers,  otherwise
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   493
        # avoid/unavoid will not work and will cause install failures
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   494
        if not self.dry_run:
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   495
            self.api_inst.refresh(immediate=True)
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   496
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   497
        # Perform the transfer specific operations.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   498
        for trans_val in self._transfer_list:
942
0a70ee0305fa 7001344-A couple of transfer files got copied over incorrectly
Ginnie Wray<virginia.wray@oracle.com>
parents: 940
diff changeset
   499
            if trans_val.get(ACTION) == "install":
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   500
                self.check_cancel_event()
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   501
                callback = trans_val.get(APP_CALLBACK)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   502
                if trans_val.get(CONTENTS):
1092
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   503
                    self.logger.info("Installing packages from:")
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   504
                    self.print_repository_uris()
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   505
1650
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   506
                    reject_list = trans_val.get(REJECT_LIST)
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   507
                    if reject_list:
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   508
                        self.logger.info(
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   509
                            "Transfer set to reject packages matching:")
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   510
                        for pkg in reject_list:
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   511
                            self.logger.info("  %s", pkg)
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   512
                    else:
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   513
                        # Set the reject list to be the default value rather
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   514
                        # than None
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   515
                        self.logger.debug(
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   516
                            "Transfer reject package list is empty")
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   517
                        reject_list = misc.EmptyI
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   518
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   519
                    if not self.dry_run:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   520
                        # Install packages
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   521
                        if trans_val.get(IPS_ARGS):
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   522
                            self.api_inst.plan_install(
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   523
                                     pkg_list=trans_val.get(CONTENTS),
1650
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   524
                                     reject_list=reject_list,
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   525
                                     **trans_val.get(IPS_ARGS))
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   526
                        else:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   527
                            self.api_inst.plan_install(
1650
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   528
                                    pkg_list=trans_val.get(CONTENTS),
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   529
                                    reject_list=reject_list)
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   530
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   531
                        if callback:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   532
                            # execute the callback function passing it
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   533
                            # the api object we are using to perform the
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   534
                            # transfer to perform additional inspection or
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   535
                            # deal with things such as license acceptance.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   536
                            callback(self.api_inst)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   537
1619
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   538
                        licensed = dict()
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   539
                        plan = self.api_inst.describe()
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   540
                        for pfmri, src, dest, accepted, displayed \
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   541
                            in plan.get_licenses():
1619
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   542
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   543
                            if not dest.must_accept and not dest.must_display:
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   544
                                continue
1619
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   545
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   546
                            # Use just the package name, no publisher or
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   547
                            # version, neater output.
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   548
                            fmri = pfmri.get_name()
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   549
                            licensed[fmri] = list()
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   550
                            if dest.must_accept:
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   551
                                licensed[fmri].append(LICENSE_ACCEPTED)
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   552
                            if dest.must_display:
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   553
                                licensed[fmri].append(LICENSE_NOT_DISP)
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   554
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   555
                            self.api_inst.set_plan_license_status(pfmri,
1092
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   556
                                dest.license, displayed=True, accepted=True)
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   557
1619
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   558
                        if licensed:
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   559
                            self.logger.info("Please review the licenses "
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   560
                                "for the following packages post-install:")
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   561
                            for fmri in licensed:
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   562
                                if len(licensed[fmri]) == 2:
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   563
                                    # Looks better to output over two lines,
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   564
                                    # when there are two flags to output
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   565
                                    self.logger.info("  %-40s (%s,", fmri,
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   566
                                                     licensed[fmri][0])
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   567
                                    self.logger.info("  %-40s  %s)", "",
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   568
                                                     licensed[fmri][1])
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   569
                                else:
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   570
                                    # Always at least one, otherwise wouldn't
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   571
                                    # be in the dictionary at all.
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   572
                                    self.logger.info("  %-40s (%s)", fmri,
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   573
                                                     licensed[fmri][0])
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   574
                            self.logger.info("Package licenses may be viewed "
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   575
                                "using the command:")
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   576
                            self.logger.info("  pkg info --license <pkg_fmri>")
8146839f7594 7152537 AI fails to install packages with licenses using must-display=true and not must-accept=true
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1599
diff changeset
   577
1721
4ee0239d9a9f 7176734 adjust for new IPS progress module API
Dan Price <daniel.price@oracle.com>
parents: 1709
diff changeset
   578
                        # Describe the install plan in the debug log.
1706
bfbbe94a121d 7125955 install_transfer/ips module should log more info about the packages being installed into the image
Geoffrey Hart <geoffrey.hart@oracle.com>
parents: 1692
diff changeset
   579
                        plan = self.api_inst.describe().get_changes()
1721
4ee0239d9a9f 7176734 adjust for new IPS progress module API
Dan Price <daniel.price@oracle.com>
parents: 1709
diff changeset
   580
                        self.logger.debug("Installation Plan:")
4ee0239d9a9f 7176734 adjust for new IPS progress module API
Dan Price <daniel.price@oracle.com>
parents: 1709
diff changeset
   581
                        for src_pkg, dest_pkg in plan:
4ee0239d9a9f 7176734 adjust for new IPS progress module API
Dan Price <daniel.price@oracle.com>
parents: 1709
diff changeset
   582
                            self.logger.debug("    %s" % str(dest_pkg))
1706
bfbbe94a121d 7125955 install_transfer/ips module should log more info about the packages being installed into the image
Geoffrey Hart <geoffrey.hart@oracle.com>
parents: 1692
diff changeset
   583
955
000af470aa07 7001612-Detailed output when reporting package transfer needed/remove unneeded output
Ginnie Wray<virginia.wray@oracle.com>
parents: 954
diff changeset
   584
                        # Execute the transfer action
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   585
                        self.api_inst.prepare()
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   586
                        self.api_inst.execute_plan()
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   587
                        self.api_inst.reset()
955
000af470aa07 7001612-Detailed output when reporting package transfer needed/remove unneeded output
Ginnie Wray<virginia.wray@oracle.com>
parents: 954
diff changeset
   588
1160
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   589
                        # 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: 1151
diff changeset
   590
                        # 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: 1151
diff changeset
   591
                        # 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: 1151
diff changeset
   592
                        # change dir back to "/".
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   593
                        os.chdir("/")
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   594
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   595
                    else:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   596
                        self.logger.debug("Dry Run: Installing packages")
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   597
942
0a70ee0305fa 7001344-A couple of transfer files got copied over incorrectly
Ginnie Wray<virginia.wray@oracle.com>
parents: 940
diff changeset
   598
            elif trans_val.get(ACTION) == "uninstall":
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   599
                self.logger.debug("Uninstalling packages")
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   600
                if not self.dry_run:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   601
                    # Uninstall packages
1161
5c1b6d445efc 7048838 update CLIENT_API_VERSION and remove 'recursive_removal' from install libraries
Drew Fisher <drew.fisher@oracle.com>
parents: 1160
diff changeset
   602
                    if IPS_ARGS in trans_val:
5c1b6d445efc 7048838 update CLIENT_API_VERSION and remove 'recursive_removal' from install libraries
Drew Fisher <drew.fisher@oracle.com>
parents: 1160
diff changeset
   603
                        self.api_inst.plan_uninstall(trans_val.get(CONTENTS),
5c1b6d445efc 7048838 update CLIENT_API_VERSION and remove 'recursive_removal' from install libraries
Drew Fisher <drew.fisher@oracle.com>
parents: 1160
diff changeset
   604
                            **trans_val.get(IPS_ARGS))
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   605
                    else:
1161
5c1b6d445efc 7048838 update CLIENT_API_VERSION and remove 'recursive_removal' from install libraries
Drew Fisher <drew.fisher@oracle.com>
parents: 1160
diff changeset
   606
                        self.api_inst.plan_uninstall(trans_val.get(CONTENTS))
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   607
955
000af470aa07 7001612-Detailed output when reporting package transfer needed/remove unneeded output
Ginnie Wray<virginia.wray@oracle.com>
parents: 954
diff changeset
   608
                    # Execute the transfer action
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   609
                    self.api_inst.prepare()
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   610
                    self.api_inst.execute_plan()
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   611
                    self.api_inst.reset()
955
000af470aa07 7001612-Detailed output when reporting package transfer needed/remove unneeded output
Ginnie Wray<virginia.wray@oracle.com>
parents: 954
diff changeset
   612
1650
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   613
            elif trans_val.get(ACTION) == "avoid":
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   614
                self.logger.info("Setting packages to avoid:")
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   615
                avoid_list = trans_val.get(CONTENTS)
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   616
                for pkg in avoid_list:
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   617
                    self.logger.info("  %s", pkg)
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   618
                if not self.dry_run:
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   619
                    # Avoid packages
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   620
                    self.api_inst.avoid_pkgs(avoid_list)
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   621
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   622
            elif trans_val.get(ACTION) == "unavoid":
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   623
                self.logger.info("Removing packages from list to avoid:")
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   624
                unavoid_list = trans_val.get(CONTENTS)
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   625
                for pkg in unavoid_list:
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   626
                    self.logger.info("  %s", pkg)
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   627
                if not self.dry_run:
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   628
                    # Avoid packages
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   629
                    self.api_inst.avoid_pkgs(unavoid_list, unavoid=True)
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   630
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   631
            if trans_val.get(PURGE_HISTORY):
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   632
                # purge history if requested.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   633
                self.logger.debug("Purging History")
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   634
                if not self.dry_run:
1235
fea9874bba56 7059924 All 5 DC isos double in size in snv_169 and livecd install fails since / ran out of room.
Drew Fisher <drew.fisher@oracle.com>
parents: 1174
diff changeset
   635
                    img = self.api_inst.img
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   636
                    img.history.purge()
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   637
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   638
    def check_cancel_event(self):
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   639
        '''Check to see if a cancel event of the transfer is requested. If so,
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   640
           cleanup changes made to the system and raise an exception.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   641
        '''
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   642
        if self._cancel_event:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   643
            self._cleanup()
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   644
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   645
    def _cleanup(self):
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   646
        '''Method to perform any necessary cleanup needed.'''
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   647
        self.logger.debug("Cleaning up")
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   648
        if self.pmon:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   649
            self.pmon.done = True
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   650
            self.pmon.wait()
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   651
            self.pmon = None
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   652
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   653
    def set_image_args(self):
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   654
        '''Set the image args we need set because the information
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   655
           was passed in via other attributes. These include progtrack,
1160
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   656
           prefix, repo_uri, origins, and mirrors.  If we're creating a
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   657
           zone image, we also need to set the use-system-repo property
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   658
           in the props argument.
1692
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   659
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   660
           For the publisher used to create the image, it is possible to
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   661
           omit the prefix (_publ) and allow IPS to do auto-discovery from
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   662
           the repo itself.
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   663
        '''
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   664
        self._image_args = copy.copy(self.image_args)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   665
        self._image_args["progtrack"] = self.prog_tracker
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   666
        if self._publ and self._publ is not None:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   667
            self._image_args["prefix"] = self._publ
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   668
        if self._origin and self._origin is not None:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   669
            self._image_args["repo_uri"] = self._origin[0]
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   670
        if self._origin[1:]:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   671
            self._image_args["origins"] = self._origin[1:]
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   672
        if self._mirror and self._mirror is not None:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   673
            self._image_args["mirrors"] = self._mirror
1160
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   674
        if self.is_zone:
1350
025c6311d0d9 7071386 Improve progress reporting for text installer and GUI installer
Karen Tung <Karen.Tung@oracle.com>
parents: 1261
diff changeset
   675
            if "props" in self._image_args:
1160
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   676
                props_dict = self._image_args["props"]
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   677
                props_dict["use-system-repo"] = True
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   678
            else:
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   679
                props_dict = {"use-system-repo": True}
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   680
                self._image_args["props"] = props_dict
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   681
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   682
    def get_ips_api_inst(self):
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   683
        '''Get a handle to the api instance. If it is specified to use
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   684
           the existing image grab the handle for the appropriate
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   685
           image. If it's specified to create, remove any image that may
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   686
           be located at the destination and create a new one there.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   687
           If any facets are specified, set them upon image creation.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   688
        '''
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   689
        if self.img_action == self.EXISTING:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   690
            # An IPS image should exist and we are to use it.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   691
            self.logger.debug("Using existing image")
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   692
            _img = image.Image(root=self.dst, user_provided_dir=True)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   693
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   694
            try:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   695
                self.api_inst = api.ImageInterface(self.dst,
1380
2f3830b79568 7072842 update install gate for pkg5 API version bump to 66
Drew Fisher <drew.fisher@oracle.com>
parents: 1373
diff changeset
   696
                    PKG5_API_VERSION, self.prog_tracker, None, PKG_CLIENT_NAME)
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   697
            except api_errors.VersionException, ips_err:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   698
                raise ValueError("The IPS API version specified, "
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   699
                                       + str(ips_err.received_version) +
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   700
                                       " does not agree with "
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   701
                                       "the expected version, "
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   702
                                       + str(ips_err.expected_version))
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   703
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   704
        elif self.img_action == self.CREATE:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   705
            # Create a new image, destroy the old one if it exists.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   706
            self.logger.info("Creating IPS image")
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   707
            if self.facets:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   708
                allow = {"TRUE": True, "FALSE": False}
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   709
                for fname in self.facets.keys():
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   710
                    if not fname.startswith("facet."):
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   711
                        raise ValueError("Facet name, %s, must "
942
0a70ee0305fa 7001344-A couple of transfer files got copied over incorrectly
Ginnie Wray<virginia.wray@oracle.com>
parents: 940
diff changeset
   712
                                         "begin with \"facet\"." % fname)
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   713
                    if not isinstance(self.facets[fname], bool):
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   714
                        if self.facets[fname].upper() not in allow:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   715
                            raise ValueError("Facet argument must be "
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   716
                                             "True|False")
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   717
                        self.facets[fname] = \
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   718
                            allow[self.facets[fname].upper()]
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   719
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   720
                self._image_args.update({"facets": self.facets})
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   721
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   722
            if os.path.exists(self.dst):
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   723
                shutil.rmtree(self.dst, ignore_errors=True)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   724
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   725
            try:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   726
                self.api_inst = api.image_create(
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: 1092
diff changeset
   727
                    pkg_client_name=PKG_CLIENT_NAME,
1380
2f3830b79568 7072842 update install gate for pkg5 API version bump to 66
Drew Fisher <drew.fisher@oracle.com>
parents: 1373
diff changeset
   728
                    version_id=PKG5_API_VERSION, root=self.dst,
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: 1092
diff changeset
   729
                    imgtype=self.completeness, is_zone=self.is_zone,
1692
aa8503663e0f 7170813 AI fails on client hits assert (prefix or refresh_allowed) or not repo_uri
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1680
diff changeset
   730
                    force=True, **self._image_args)
1160
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   731
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   732
                # The above call will end up leaving our process's cwd in
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   733
                # the image's root area, which will cause pain later on
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   734
                # in tyring to unmount the image.  So we manually change
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   735
                # dir back to "/".
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   736
                os.chdir("/")
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   737
1239
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   738
                if self.is_zone:
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   739
                    # If installing a zone image, attach its image as a
1380
2f3830b79568 7072842 update install gate for pkg5 API version bump to 66
Drew Fisher <drew.fisher@oracle.com>
parents: 1373
diff changeset
   740
                    # linked image to the global zone.
1239
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   741
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   742
                    # Get an api object for the current global system image.
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   743
                    gz_api_inst = api.ImageInterface(self.SYSTEM_IMAGE,
1380
2f3830b79568 7072842 update install gate for pkg5 API version bump to 66
Drew Fisher <drew.fisher@oracle.com>
parents: 1373
diff changeset
   744
                        PKG5_API_VERSION, self.prog_tracker, False,
1239
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   745
                        self.SYSTEM_CLIENT_NAME)
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   746
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   747
                    # For a zone's linked image name, we construct it as:
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   748
                    #     "zone:<zonename>"
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   749
                    lin = gz_api_inst.parse_linked_name(
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   750
                        "zone:" + self.zonename, allow_unknown=True)
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   751
                    self.logger.debug("Linked image name: %s" % lin)
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   752
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   753
                    # Attach the zone image as a linked image.
1380
2f3830b79568 7072842 update install gate for pkg5 API version bump to 66
Drew Fisher <drew.fisher@oracle.com>
parents: 1373
diff changeset
   754
                    (ret, err, _none) = gz_api_inst.attach_linked_child(lin,
2f3830b79568 7072842 update install gate for pkg5 API version bump to 66
Drew Fisher <drew.fisher@oracle.com>
parents: 1373
diff changeset
   755
                        self.dst, force=True, li_md_only=True)
1239
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   756
                    if err != None:
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   757
                        raise ValueError("Linked image error while attaching "
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   758
                                         "zone image '%s':\n%s" %
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   759
                                         (self.zonename, str(err)))
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   760
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   761
                    # Refresh the zone's api object now that it has been
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   762
                    # attached as a linked image.
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   763
                    self.api_inst.reset()
427d479252a9 7058140 zones AI installer doesn't use linked images.
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1235
diff changeset
   764
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   765
            except api_errors.VersionException, ips_err:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   766
                self.logger.exception("Error creating the IPS image")
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   767
                raise ValueError("The IPS API version specified, "
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   768
                                       + str(ips_err.received_version) +
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   769
                                       " does not agree with "
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   770
                                       "the expected version, "
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   771
                                       + str(ips_err.expected_version))
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   772
1092
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   773
    def print_repository_uris(self):
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   774
        '''print_repository_uris() - simple method to print out the
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   775
           repository uris used
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   776
        '''
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   777
        indent = 4 * " "
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   778
        indent2 = indent * 2
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   779
        for publisher, origin_list, mirror_list in self.publisher_list:
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   780
            self.logger.info(indent + publisher)
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   781
            for origin in origin_list:
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   782
                self.logger.info(indent2 + "origin:  " + origin)
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   783
            for mirror in mirror_list:
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   784
                self.logger.info(indent2 + "mirror:  " + mirror)
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   785
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   786
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   787
class TransferIPS(AbstractIPS):
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   788
    '''IPS Transfer class to take input from the DOC. It implements the
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   789
       checkpoint interface.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   790
    '''
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   791
    VALUE_SEPARATOR = ","
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   792
1454
6d92a4a4c834 7086390 Turn on transfer/ips phase output for DC
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1389
diff changeset
   793
    # Default values for arguments
6d92a4a4c834 7086390 Turn on transfer/ips phase output for DC
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1389
diff changeset
   794
    DEFAULT_ARG = {'zonename': None, 'show_stdout': False}
6d92a4a4c834 7086390 Turn on transfer/ips phase output for DC
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1389
diff changeset
   795
6d92a4a4c834 7086390 Turn on transfer/ips phase output for DC
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1389
diff changeset
   796
    def __init__(self, name, arg=DEFAULT_ARG):
6d92a4a4c834 7086390 Turn on transfer/ips phase output for DC
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1389
diff changeset
   797
        super(TransferIPS, self).__init__(name, zonename=arg.get('zonename'),
6d92a4a4c834 7086390 Turn on transfer/ips phase output for DC
Ethan Quach <Ethan.Quach@oracle.com>
parents: 1389
diff changeset
   798
                                          show_stdout=arg.get('show_stdout'))
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   799
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   800
        # Holds the list of transfer dictionaries
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   801
        self._transfer_list = []
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   802
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   803
        # get the handle to the DOC
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   804
        self._doc = InstallEngine.get_instance().data_object_cache
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   805
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   806
        # Get the checkpoint info from the DOC
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   807
        self.soft_list = self._doc.get_descendants(name=self.name,
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   808
                                              class_type=Software)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   809
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   810
        # Add check that soft_list has only one entry
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   811
        if len(self.soft_list) != 1:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   812
            raise ValueError("Only one value for Software node can be "
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   813
                             "specified with name " + self.name)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   814
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   815
    def _parse_input(self):
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   816
        '''Method to read the parameters from the DOC and place
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   817
           them into the local lists.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   818
        '''
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   819
        self._publ = None
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   820
        self._origin = []
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   821
        self._mirror = []
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   822
        self._add_publ = []
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   823
        self._add_origin = []
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   824
        self._add_mirror = []
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   825
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   826
        self.logger.debug("Parsing the Data Object Cache")
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   827
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   828
        soft_node = self.soft_list[0]
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   829
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   830
        # Read the destination which for IPS involves reading the
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   831
        # image node. The image node contains the action, img_root,
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   832
        # and index. The image type node contains the completeness,
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   833
        # and zone info.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   834
        dst_list = soft_node.get_children(Destination.DESTINATION_LABEL,
954
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   835
                                          Destination, not_found_is_err=True)
1025
7daf8a6d0a61 7023927 Need fix to take care of pep8audit tests failure for solaris_install/transfer
Mary Ding <mary.ding@oracle.com>
parents: 1012
diff changeset
   836
        dst_image = dst_list[0].get_children(Image.IMAGE_LABEL,
954
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   837
                                             Image, not_found_is_err=True)[0]
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   838
        self.dst = self._doc.str_replace_paths_refs(dst_image.img_root)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   839
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   840
        self.img_action = dst_image.action
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   841
        self.index = dst_image.index
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   842
954
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   843
        im_type = dst_image.get_first_child(ImType.IMTYPE_LABEL, ImType)
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   844
        if im_type:
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   845
            self.completeness = im_type.completeness
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   846
            self.is_zone = bool(im_type.zone)
954
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   847
        else:
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   848
            self.completeness = "full"
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   849
            self.is_zone = False
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   850
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   851
        # Read properties to be set and put them into the properties
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   852
        # dictionary.
954
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   853
        prop_list = dst_image.get_children(Property.PROPERTY_LABEL,
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   854
                                           Property)
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   855
        for prop in prop_list:
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   856
            self.properties[prop.prop_name] = prop.val
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   857
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   858
        # Read the facets to be used in image creation and put them
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   859
        # into the facet dictionary.
954
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   860
        facet_list = dst_image.get_children(Facet.FACET_LABEL, Facet)
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   861
        for facet in facet_list:
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   862
            self.facets[facet.facet_name] = facet.val
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   863
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   864
        # Parse the Source node
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   865
        self._parse_src(soft_node)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   866
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   867
        # Get the IPS Image creations Args from the DOC if they exist.
954
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   868
        img_arg_list = dst_image.get_children(Args.ARGS_LABEL, Args)
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   869
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   870
        # If arguments were specified, validate that the
1160
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   871
        # user only specified them once, and that they
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   872
        # didn't specify arguments they're not allowed to.
954
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   873
        for args in img_arg_list:
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   874
            # ssl_key and ssl_cert are part of the image specification.
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   875
            # If the user has put them into the args that's an error
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   876
            # since we wouldn't know which one to use if they were
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   877
            # specified in both places.
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   878
            not_allowed = set(["ssl_key", "ssl_cert"])
1160
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   879
            cur_img_args = set(args.arg_dict.keys())
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   880
            overlap = list(not_allowed & cur_img_args)
954
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   881
            if overlap:
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   882
                raise ValueError("The following components may be specified "
1025
7daf8a6d0a61 7023927 Need fix to take care of pep8audit tests failure for solaris_install/transfer
Mary Ding <mary.ding@oracle.com>
parents: 1012
diff changeset
   883
                                 "with the destination image of the manifest "
7daf8a6d0a61 7023927 Need fix to take care of pep8audit tests failure for solaris_install/transfer
Mary Ding <mary.ding@oracle.com>
parents: 1012
diff changeset
   884
                                 "but are invalid as args: %s" % str(overlap))
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   885
1160
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   886
            # Check that the current set of image args being processed
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   887
            # are not duplicates of one we've already processed.
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   888
            image_args = set(self.image_args.keys())
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   889
            overlap = list(image_args & cur_img_args)
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   890
            if overlap:
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   891
                raise ValueError("The following components are specified "
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   892
                                 "twice in the manifest: %s" % str(overlap))
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   893
1380
2f3830b79568 7072842 update install gate for pkg5 API version bump to 66
Drew Fisher <drew.fisher@oracle.com>
parents: 1373
diff changeset
   894
            # Update the image args with the current image args being
1169
83735ef8ac29 7042081 usr/src/lib/install_utils is not pep8 clean
Mary Ding <mary.ding@oracle.com>
parents: 1161
diff changeset
   895
            # processed.
1160
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   896
            self.image_args.update(args.arg_dict)
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
   897
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   898
        # Parse the transfer specific attributes.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   899
        self._parse_transfer_node(soft_node)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   900
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   901
    def _parse_transfer_node(self, soft_node):
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   902
        '''Parse the DOC for the attributes that are specific for each
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   903
           transfer specified. Create a list with the attributes for each
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   904
           transfer.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   905
        '''
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   906
        # Get the list of transfers from this specific node in the DOC
954
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   907
        transfer_list = soft_node.get_children(class_type=IPSSpec)
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   908
        for trans in transfer_list:
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   909
            trans_attr = dict()
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   910
            trans_attr[ACTION] = trans.action
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   911
            trans_attr[CONTENTS] = trans.contents
1650
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
   912
            trans_attr[REJECT_LIST] = trans.reject_list
954
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   913
            trans_attr[PURGE_HISTORY] = trans.purge_history
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   914
            trans_attr[APP_CALLBACK] = trans.app_callback
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   915
954
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   916
            trans_args = trans.get_first_child(Args.ARGS_LABEL, Args)
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   917
            if trans_args:
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   918
                if not self.index:
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   919
                    trans_args.arg_dict[UPDATE_INDEX] = False
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   920
                trans_attr[IPS_ARGS] = trans_args.arg_dict
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   921
            else:
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   922
                if not self.index:
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   923
                    trans_arg_dict = {UPDATE_INDEX: False}
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   924
                    trans_attr[IPS_ARGS] = trans_arg_dict
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   925
                else:
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   926
                    trans_attr[IPS_ARGS] = None
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   927
954
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   928
            # Append the information found to the list of
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   929
            # transfers that will be performed
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   930
            if trans_attr not in self._transfer_list:
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   931
                self._transfer_list.append(trans_attr)
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   932
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   933
    def _set_publisher_info(self, pub, preferred=False):
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   934
        '''Set the preferred or additional publishers. Which publisher type to
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   935
           set is determined by the boolean, preferred.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   936
        '''
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   937
        if preferred:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   938
            self._publ = pub.publisher
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   939
            if pub.publisher:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   940
                self.logger.debug("Primary Publisher Info: %s", pub.publisher)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   941
            else:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   942
                self.logger.debug("Primary Publisher Info:")
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   943
        else:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   944
            self._add_publ.append(pub.publisher)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   945
            if pub.publisher:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   946
                self.logger.debug("Additional Publisher Info: %s",
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   947
                                  pub.publisher)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   948
            else:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   949
                self.logger.debug("Additional Publisher Info: ")
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   950
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   951
        origin_name = []
1092
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   952
        origin_uris = []
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   953
        # Get the origins for this publisher. If one isn't specified,
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   954
        # use the default origin.
954
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   955
        origin_list = pub.get_children(Origin.ORIGIN_LABEL, Origin)
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   956
        if origin_list:
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   957
            for origin in origin_list:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   958
                if preferred:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   959
                    or_repo = origin.origin
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   960
                else:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   961
                    or_repo = publisher.RepositoryURI(uri=origin.origin)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   962
                origin_name.append(or_repo)
1092
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   963
                origin_uris.append(origin.origin)
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   964
                self.logger.debug("    Origin Info: %s", origin.origin)
954
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   965
        else:
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   966
            origin_name = self.DEF_REPO_URI
1092
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   967
            origin_uris.append(self.DEF_REPO_URI)
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   968
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   969
        # Get the mirrors for the publisher if they are specified.
954
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   970
        mirror_name = []
1092
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   971
        mirror_uris = []
954
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   972
        mirror_list = pub.get_children(Mirror.MIRROR_LABEL, Mirror)
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   973
        for mirror in mirror_list:
1092
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   974
            mirror_uris.append(mirror.mirror)
954
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   975
            if preferred:
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   976
                mir_repo = mirror.mirror
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   977
            else:
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   978
                mir_repo = publisher.RepositoryURI(uri=mirror.mirror)
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   979
            mirror_name.append(mir_repo)
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   980
            self.logger.debug("    Mirror Info: %s", mirror.mirror)
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   981
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
   982
        if len(mirror_name) == 0:
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   983
            mirror_name = None
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   984
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   985
        if preferred:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   986
            self._origin = origin_name
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   987
            self._mirror = mirror_name
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   988
        else:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   989
            self._add_origin.append(origin_name)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   990
            self._add_mirror.append(mirror_name)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   991
1092
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   992
        # set the publisher_list for this publisher, only if it's not already
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   993
        # been inserted.
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   994
        entry = (pub.publisher, origin_uris, mirror_uris)
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   995
        if entry not in self.publisher_list:
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   996
            self.publisher_list.append(entry)
e0a902891787 7005892 simple_log should log which IPS repos it try to install from and setting post-install publisher
Drew Fisher <drew.fisher@oracle.com>
parents: 1077
diff changeset
   997
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   998
    def _parse_src(self, soft_node):
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
   999
        '''Parse the DOC Source, filling in the local attributes for
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1000
           _publ, _origin, _mirror, _add_publ, _add_origin, _add_mirror.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1001
        '''
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1002
        self.logger.debug("Reading the IPS source")
954
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
  1003
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
  1004
        src_list = soft_node.get_children(Source.SOURCE_LABEL, Source)
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
  1005
        if len(src_list) > 1:
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
  1006
            raise ValueError("Only one IPS image source may be specified")
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1007
954
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
  1008
        if len(src_list) == 1:
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1009
            src = src_list[0]
954
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
  1010
            pub_list = src.get_children(Publisher.PUBLISHER_LABEL, Publisher,
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
  1011
                                        not_found_is_err=True)
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1012
1160
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
  1013
            # If we're not installing a zone image, the first publisher is
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
  1014
            # treated as the preferred one (i.e. it's passed as arguments to
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
  1015
            # the image_create() call); for a zone, all publishers should
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
  1016
            # be processed as additional publishers since a zone image will
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
  1017
            # be created with the system repository already in place.
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
  1018
            if not self.is_zone:
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
  1019
                pub = pub_list.pop(0)
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
  1020
                self._set_publisher_info(pub, preferred=True)
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1021
            for pub in pub_list:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1022
                self._set_publisher_info(pub, preferred=False)
954
a7a34c8289ec 7003533 get_descendents should return an empty list when no objects are found
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 953
diff changeset
  1023
        else:
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1024
            if self.img_action != self.EXISTING:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1025
                # If the source isn't specified, use the defaults for create.
1160
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
  1026
                # For a zone image, the system repo will already be set up
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
  1027
                # as the default repo so we don't need to set up a the default
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
  1028
                # here if source isn't specified.
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
  1029
                if not self.is_zone:
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
  1030
                    self._origin = [self.DEF_REPO_URI]
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
  1031
                    self.logger.debug("    Origin Info: %s", self.DEF_REPO_URI)
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1151
diff changeset
  1032
                    self._mirror = None
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1033
1389
39e1a166f0c6 7057702 AI installer should catch CatalogRefreshException exceptions and print it's contents on error
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1380
diff changeset
  1034
    def catalog_failures_to_str(self, cre):
39e1a166f0c6 7057702 AI installer should catch CatalogRefreshException exceptions and print it's contents on error
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1380
diff changeset
  1035
        '''Convert a CatalogRefreshException into a formatted string.
39e1a166f0c6 7057702 AI installer should catch CatalogRefreshException exceptions and print it's contents on error
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1380
diff changeset
  1036
39e1a166f0c6 7057702 AI installer should catch CatalogRefreshException exceptions and print it's contents on error
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1380
diff changeset
  1037
           This is based on the IPS pkg/client.py display_catalog_failures()
39e1a166f0c6 7057702 AI installer should catch CatalogRefreshException exceptions and print it's contents on error
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1380
diff changeset
  1038
           implementation.
39e1a166f0c6 7057702 AI installer should catch CatalogRefreshException exceptions and print it's contents on error
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1380
diff changeset
  1039
        '''
39e1a166f0c6 7057702 AI installer should catch CatalogRefreshException exceptions and print it's contents on error
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1380
diff changeset
  1040
        total = cre.total
39e1a166f0c6 7057702 AI installer should catch CatalogRefreshException exceptions and print it's contents on error
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1380
diff changeset
  1041
        succeeded = cre.succeeded
39e1a166f0c6 7057702 AI installer should catch CatalogRefreshException exceptions and print it's contents on error
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1380
diff changeset
  1042
39e1a166f0c6 7057702 AI installer should catch CatalogRefreshException exceptions and print it's contents on error
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1380
diff changeset
  1043
        lines = list()
39e1a166f0c6 7057702 AI installer should catch CatalogRefreshException exceptions and print it's contents on error
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1380
diff changeset
  1044
        lines.append("Error refreshing publishers, %s/%s "
39e1a166f0c6 7057702 AI installer should catch CatalogRefreshException exceptions and print it's contents on error
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1380
diff changeset
  1045
                     "catalogs successfully updated:" %
39e1a166f0c6 7057702 AI installer should catch CatalogRefreshException exceptions and print it's contents on error
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1380
diff changeset
  1046
                     (succeeded, total))
39e1a166f0c6 7057702 AI installer should catch CatalogRefreshException exceptions and print it's contents on error
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1380
diff changeset
  1047
39e1a166f0c6 7057702 AI installer should catch CatalogRefreshException exceptions and print it's contents on error
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1380
diff changeset
  1048
        for pub, err in cre.failed:
1599
118f135d9d1e 7143246 pylint errors in solaris_install/transfer
Mary Ding <mary.ding@oracle.com>
parents: 1454
diff changeset
  1049
            lines.append("")
118f135d9d1e 7143246 pylint errors in solaris_install/transfer
Mary Ding <mary.ding@oracle.com>
parents: 1454
diff changeset
  1050
            lines.append(str(err))
1389
39e1a166f0c6 7057702 AI installer should catch CatalogRefreshException exceptions and print it's contents on error
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1380
diff changeset
  1051
39e1a166f0c6 7057702 AI installer should catch CatalogRefreshException exceptions and print it's contents on error
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1380
diff changeset
  1052
        if cre.errmessage:
1599
118f135d9d1e 7143246 pylint errors in solaris_install/transfer
Mary Ding <mary.ding@oracle.com>
parents: 1454
diff changeset
  1053
            lines.append(cre.errmessage)
1389
39e1a166f0c6 7057702 AI installer should catch CatalogRefreshException exceptions and print it's contents on error
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1380
diff changeset
  1054
39e1a166f0c6 7057702 AI installer should catch CatalogRefreshException exceptions and print it's contents on error
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1380
diff changeset
  1055
        return "\n".join(lines)
39e1a166f0c6 7057702 AI installer should catch CatalogRefreshException exceptions and print it's contents on error
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1380
diff changeset
  1056
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1057
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1058
class TransferIPSAttr(AbstractIPS):
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1059
    '''IPS Transfer class to take input from the attributes.'''
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1060
    def __init__(self, name):
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1061
        super(TransferIPSAttr, self).__init__(name)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1062
        # Attributes per transfer
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1063
        self.action = None
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1064
        self.contents = None
1650
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
  1065
        self.reject_list = None
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1066
        self.purge_history = False
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1067
        self.app_callback = None
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1068
        self.args = {}
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1069
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1070
        self._transfer_list = []
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1071
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1072
    def _parse_input(self):
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1073
        '''Parse the source and transfer specific attributes and put
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1074
           into local versions. The attributes to be parsed are:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1075
           src (for publisher, origin, mirror), pkg_install, pkg_uninstall,
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1076
           purge_history, and args.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1077
        '''
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1078
        self._publ = None
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1079
        self._origin = []
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1080
        self._mirror = []
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1081
        self._add_publ = []
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1082
        self._add_origin = []
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1083
        self._add_mirror = []
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1084
        trans_attr = dict()
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1085
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1086
        self.logger.debug("Reading the Source")
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1087
        if self.src:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1088
            self._publ, self._origin, self._mirror = self.src[0]
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1089
            self.logger.debug("Source Info:")
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1090
            if self._publ:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1091
                self.logger.debug("Primary Publisher name: %s",
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1092
                                  str(self._publ))
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1093
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1094
            for origin in self._origin:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1095
                self.logger.debug("    Origin name: %s", str(origin))
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1096
            if self._mirror:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1097
                for mirror in self._mirror:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1098
                    self.logger.debug("    Mirror name: %s", str(mirror))
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1099
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1100
            for pub in self.src[1:]:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1101
                pub_name, origin_lst, mirror_lst = pub
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1102
                if pub_name:
1025
7daf8a6d0a61 7023927 Need fix to take care of pep8audit tests failure for solaris_install/transfer
Mary Ding <mary.ding@oracle.com>
parents: 1012
diff changeset
  1103
                    self.logger.debug("Additional publisher: %s",
7daf8a6d0a61 7023927 Need fix to take care of pep8audit tests failure for solaris_install/transfer
Mary Ding <mary.ding@oracle.com>
parents: 1012
diff changeset
  1104
                                       str(pub_name))
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1105
                origin_name = []
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1106
                if origin_lst:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1107
                    for origin in origin_lst:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1108
                        or_repo = publisher.RepositoryURI(uri=origin)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1109
                        origin_name.append(or_repo)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1110
                        self.logger.debug("    Origin name: %s", str(origin))
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1111
                else:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1112
                    origin_name = [self.DEF_REPO_URI]
1025
7daf8a6d0a61 7023927 Need fix to take care of pep8audit tests failure for solaris_install/transfer
Mary Ding <mary.ding@oracle.com>
parents: 1012
diff changeset
  1113
                    self.logger.debug("    Origin name: %s",
7daf8a6d0a61 7023927 Need fix to take care of pep8audit tests failure for solaris_install/transfer
Mary Ding <mary.ding@oracle.com>
parents: 1012
diff changeset
  1114
                                       str(self.DEF_REPO_URI))
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1115
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1116
                mirror_name = []
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1117
                if mirror_lst:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1118
                    for mirror in mirror_lst:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1119
                        mir_repo = publisher.RepositoryURI(uri=mirror)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1120
                        mirror_name.append(mir_repo)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1121
                        self.logger.debug("    Mirror name: %s", str(mirror))
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1122
                else:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1123
                    mirror_name = None
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1124
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1125
                self._add_publ.append(pub_name)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1126
                self._add_origin.append(origin_name)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1127
                self._add_mirror.append(mirror_name)
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1128
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1129
        elif self.img_action != self.EXISTING:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1130
            # The source isn't specified so use the default.
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1131
            self._origin = [self.DEF_REPO_URI]
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1132
            self.logger.debug("Origin name: %s", str(self.DEF_REPO_URI))
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1133
            self._mirror = None
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1134
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1135
        trans_attr[ACTION] = self.action
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1136
        trans_attr[CONTENTS] = self.contents
1650
0a799935ac50 7145997 support for avoid lists and reject during install action should be added.
Darren Kenny <Darren.Kenny@Oracle.COM>
parents: 1619
diff changeset
  1137
        trans_attr[REJECT_LIST] = self.reject_list
940
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1138
        trans_attr[PURGE_HISTORY] = self.purge_history
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1139
        trans_attr[APP_CALLBACK] = self.app_callback
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1140
        if not self.index:
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1141
            self.args[UPDATE_INDEX] = False
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1142
        trans_attr[IPS_ARGS] = self.args
8b8b5f371bf9 6997589 - implement CUD transfer mechanism
Ginnie Wray<virginia.wray@oracle.com>
parents:
diff changeset
  1143
        self._transfer_list.append(trans_attr)