usr/src/cmd/gui-install/src/disk_screen.py
author swati sarraf <swati.sarraf@oracle.com>
Mon, 30 Jul 2012 09:46:11 -0700
changeset 1758 ecfb8c75e5a4
parent 1754 90688163755c
permissions -rw-r--r--
7187287 Bug 7163694 fixes in gui-install/disk_screen.py are removed due to mismerge b/w bug 7163694 &7183018
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
     1
#!/usr/bin/python
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
     2
#
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
     3
# CDDL HEADER START
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
     4
#
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
     5
# The contents of this file are subject to the terms of the
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
     6
# Common Development and Distribution License (the "License").
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
     7
# You may not use this file except in compliance with the License.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
     8
#
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
     9
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    10
# or http://www.opensolaris.org/os/licensing.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    11
# See the License for the specific language governing permissions
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    12
# and limitations under the License.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    13
#
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    14
# When distributing Covered Code, include this CDDL HEADER in each
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    15
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    16
# If applicable, add the following below this CDDL HEADER, with the
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    17
# fields enclosed by brackets "[]" replaced with your own identifying
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    18
# information: Portions Copyright [yyyy] [name of copyright owner]
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    19
#
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    20
# CDDL HEADER END
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    21
#
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
    22
# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    23
#
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    24
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    25
'''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    26
Disk Screen for GUI Install app
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    27
'''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    28
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    29
import pygtk
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    30
pygtk.require('2.0')
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    31
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    32
import locale
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    33
import logging
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
    34
import os
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    35
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    36
import glib
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    37
import gobject
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    38
import gtk
1758
ecfb8c75e5a4 7187287 Bug 7163694 fixes in gui-install/disk_screen.py are removed due to mismerge b/w bug 7163694 &7183018
swati sarraf <swati.sarraf@oracle.com>
parents: 1754
diff changeset
    39
from math import ceil 
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    40
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    41
import osol_install.errsvc as errsvc
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    42
import osol_install.liberrsvc as liberrsvc
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    43
from solaris_install.data_object import ObjectNotFoundError
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    44
from solaris_install.engine import InstallEngine
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    45
from solaris_install.gui_install.base_screen import BaseScreen, \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    46
    NotOkToProceedError
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    47
from solaris_install.gui_install.fdisk_panel import FdiskPanel
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
    48
from solaris_install.gui_install.gpt_panel import GPTPanel
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    49
from solaris_install.gui_install.gui_install_common import \
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
    50
    empty_container, get_td_results_state, is_discovery_complete, \
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
    51
    modal_dialog, set_td_results_state, IMAGE_DIR, COLOR_WHITE, \
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
    52
    DEFAULT_LOG_LOCATION, GLADE_ERROR_MSG, ISCSI_LABEL, N_
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    53
from solaris_install.gui_install.install_profile import InstallProfile
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    54
from solaris_install.logger import INSTALL_LOGGER_NAME
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    55
from solaris_install.target import Target
1754
90688163755c 7183018 Gui livecd is not using size from image.info but using fallback image size
swati sarraf <swati.sarraf@oracle.com>
parents: 1752
diff changeset
    56
from solaris_install.target.controller import FALLBACK_IMAGE_SIZE 
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    57
from solaris_install.target.controller import TargetController, \
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
    58
    BadDiskError, BadDiskBlockSizeError, SubSizeDiskError, DEFAULT_ZPOOL_NAME
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    59
from solaris_install.target.logical import Zpool, Zvol, Filesystem
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
    60
from solaris_install.target.physical import Disk, Iscsi, Slice
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    61
from solaris_install.target.shadow.physical import ShadowPhysical
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    62
from solaris_install.target.size import Size
1754
90688163755c 7183018 Gui livecd is not using size from image.info but using fallback image size
swati sarraf <swati.sarraf@oracle.com>
parents: 1752
diff changeset
    63
from solaris_install.transfer.media_transfer import get_image_size
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    64
1298
268fd28dea26 7068118 system after gui-install seems to lack swap entry in vfstab
Dermot <Dermot.McCluskey@Oracle.COM>
parents: 1229
diff changeset
    65
ROOT_POOL = DEFAULT_ZPOOL_NAME
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    66
EXPORT_FS_NAME = 'export'
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    67
EXPORT_FS_MOUNTPOINT = '/export'
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    68
EXPORT_HOME_FS_NAME = 'export/home'
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    69
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    70
LOGGER = None
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    71
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    72
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    73
class DiskScreen(BaseScreen):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    74
    '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    75
        The Disk screen.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    76
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    77
        There are two distinct versions of this screen:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    78
        - if the user enters this screen before TD has completed
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    79
          execution, they will see the "Finding Disks..." version,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    80
          which just shows a spinning icon, and has the Next
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    81
          button disabled
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    82
        - once TD has completed, the "Disk Selection" version can be
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    83
          shown, which has a row of buttons, one for each discovered
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    84
          disk, along the top of the screen, and a complex set of
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    85
          widgets which allows the user to partition the disk, at
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    86
          the bottom.  The Next button is enabled.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    87
    '''
1439
7375801f1f12 7085402 gui-install introduces localiziable string with non-swappable parameters
Dermot <Dermot.McCluskey@Oracle.COM>
parents: 1401
diff changeset
    88
    BUSY_TEXT = N_("Finding Disks")
7375801f1f12 7085402 gui-install introduces localiziable string with non-swappable parameters
Dermot <Dermot.McCluskey@Oracle.COM>
parents: 1401
diff changeset
    89
    BUSY_MARKUP = '<span font_desc="Bold">%s</span>'
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    90
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    91
    #--------------------------------------------------------------------------
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    92
    # API methods
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    93
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    94
    def __init__(self, builder):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    95
        ''' Initializer method - called from constructor.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    96
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    97
            Params:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    98
            - builder, a gtk.Builder object, used to retrieve Gtk+
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    99
              widgets from Glade XML files.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   100
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   101
            Returns: Nothing
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   102
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   103
        global LOGGER
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   104
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   105
        LOGGER = logging.getLogger(INSTALL_LOGGER_NAME)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   106
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   107
        super(DiskScreen, self).__init__(builder)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   108
        self.name = "Disk Screen"
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   109
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   110
        self._monitor_timeout_id = None
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   111
        self._td_disks = list()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   112
        self._selected_disk = None
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   113
        self._target_controller = None
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   114
        self._wholediskmode = False
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   115
        self._disk_buttons = list()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   116
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   117
        self._toplevel = None
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   118
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   119
        # Top-level widget for the "Finding Disks" version of screen
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   120
        self._finding_disks_vbox = None
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   121
        # Top-level widget for the "Disk Selection" version of screen
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   122
        self._disk_buttons_hbuttonbox = None
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   123
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   124
        self._disksviewport = self.builder.get_object("disksviewport")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   125
        self._diskselectionhscrollbar = self.builder.get_object(
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   126
            "diskselectionhscrollbar")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   127
        self._diskerrorimage = self.builder.get_object("diskerrorimage")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   128
        self._diskwarningimage = self.builder.get_object("diskwarningimage")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   129
        self._diskstatuslabel = self.builder.get_object("diskstatuslabel")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   130
        self._partitioningvbox = self.builder.get_object("partitioningvbox")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   131
        self._diskradioalignment = self.builder.get_object(
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   132
            "diskradioalignment")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   133
        self._diskwarninghbox = self.builder.get_object("diskwarninghbox")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   134
        self._wholediskradio = self.builder.get_object("wholediskradio")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   135
        self._partitiondiskradio = self.builder.get_object(
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   136
            "partitiondiskradio")
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   137
        self._custompartitionbox = self.builder.get_object(
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   138
            "custompartitionbox")
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   139
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   140
        if None in [self._disksviewport, self._diskselectionhscrollbar,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   141
            self._diskerrorimage, self._diskwarningimage,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   142
            self._diskstatuslabel, self._partitioningvbox,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   143
            self._diskradioalignment, self._diskwarninghbox,
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   144
            self._wholediskradio, self._partitiondiskradio,
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   145
            self._custompartitionbox]:
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   146
            modal_dialog(_("Internal error"), GLADE_ERROR_MSG)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   147
            raise RuntimeError(GLADE_ERROR_MSG)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   148
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   149
        # We use this indirection to facilitate different partitioning control
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   150
        # backends for MBR/fdisk and GPT partition formats
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   151
        self._fdisk_panel = FdiskPanel(self.builder)
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   152
        self._gpt_panel = GPTPanel(self.builder)
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   153
        self._disk_panel = self._gpt_panel
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   154
        self._custompartitionbox.pack_start(self._disk_panel.toplevel,
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   155
            expand=True, fill=True, padding=0)
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   156
        self._icon_theme = gtk.icon_theme_get_default()
1439
7375801f1f12 7085402 gui-install introduces localiziable string with non-swappable parameters
Dermot <Dermot.McCluskey@Oracle.COM>
parents: 1401
diff changeset
   157
        self._busy_label = None
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   158
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   159
    def enter(self):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   160
        ''' Show the Disk Screen.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   161
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   162
            This method is called when the user navigates to this screen
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   163
            via the Back and Next buttons.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   164
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   165
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   166
        self._toplevel = self.set_main_window_content("diskselectiontoplevel")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   167
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   168
        # Screen-specific configuration
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   169
        self.activate_stage_label("diskselectionstagelabel")
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   170
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   171
        # Initially, hide the Partitioning VBox and Disk selection scrollbar
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   172
        self._partitioningvbox.hide()
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   173
        self._diskselectionhscrollbar.hide()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   174
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   175
        if is_discovery_complete():
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   176
            self._show_screen_for_td_complete()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   177
        else:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   178
            self._show_screen_for_td_not_complete()
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   179
            # Only set one timeout monitor at a time, even if user enters the
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   180
            # screen multiple times before TD completes
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   181
            if self._monitor_timeout_id is None:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   182
                self._monitor_timeout_id = \
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   183
                    glib.timeout_add(200, self._td_completion_monitor)
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   184
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   185
        return False
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   186
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   187
    def go_back(self):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   188
        ''' Perform any checks required before allowing to user to
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   189
            go back to the previous screen.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   190
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   191
            Does nothing.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   192
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   193
        pass
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   194
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   195
    def validate(self):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   196
        ''' Validate the user selections before proceeding.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   197
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   198
            Perform a series of validations on the deleted
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   199
            disk and the selected partitions, if appropriate.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   200
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   201
            If the Disk and/or Partitions are not suitable for the install,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   202
            then display an error dialog and raise an exception.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   203
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   204
            Raises: NotOkToProceedError
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   205
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   206
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   207
        LOGGER.info("Starting validation.")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   208
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   209
        # First, tell the disk panel to tidy up the disk
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   210
        self._disk_panel.finalize()
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   211
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   212
        # Validation phases:
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   213
        # 1. Start off by validating the generic stuff such as a disk being
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   214
        #    selected, big enough etc.
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   215
        #
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   216
        # 2. Then get into the specifics by handing over validation control
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   217
        #    to the disk_panel object for fdisk/gpt specific checks.
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   218
        #
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   219
        # 3. Validate the logical elements.
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   220
        #
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   221
        # 4. Throw up misc. warnings (not errors) if space is tight
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   222
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   223
        engine = InstallEngine.get_instance()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   224
        doc = engine.data_object_cache
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   225
        desired_root = doc.get_descendants(name=Target.DESIRED,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   226
            class_type=Target,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   227
            max_depth=2,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   228
            max_count=1,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   229
            not_found_is_err=True)[0]
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   230
        # UI only allows 1 disk to be selected, so no need to
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   231
        # check for multiple selected disks
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   232
        selected_disk = desired_root.get_first_child(class_type=Disk)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   233
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   234
        # ERROR #1 - No disk selected
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   235
        # (UI will prevent this happening, but this check remains
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   236
        # for completeness.)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   237
        if selected_disk is None:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   238
            LOGGER.error("No disk selected.")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   239
            modal_dialog(_("No disk has been selected for "
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   240
                "Oracle Solaris installation."),
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   241
                _("Select a disk."))
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   242
            self._raise_error("No disk selected")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   243
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   244
        # ERROR #2 - No suitable disk selected
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   245
        # (TargetController will prevent this happening, but this check remains
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   246
        # for completeness.)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   247
        if selected_disk.disk_prop is None or \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   248
            selected_disk.disk_prop.dev_size is None or \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   249
            selected_disk.disk_prop.dev_size < \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   250
            self._target_controller.minimum_target_size:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   251
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   252
            LOGGER.error("Disk too small.")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   253
            LOGGER.error("Minimum size is %s" % \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   254
                self._target_controller.minimum_target_size)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   255
            if selected_disk.disk_prop is not None and \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   256
                selected_disk.disk_prop.dev_size is not None:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   257
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   258
                LOGGER.error("Disk size is (%s)." % \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   259
                    selected_disk.disk_prop.dev_size)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   260
            else:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   261
                LOGGER.error("No size info available.")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   262
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   263
            modal_dialog(_("The selected disk is not suitable for "
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   264
                "Oracle Solaris installation."),
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   265
                _("Select another disk."))
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   266
            self._raise_error("Disk too small")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   267
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   268
        # ERROR #2.5 - No suitable disk selected
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   269
        # (TargetController will prevent this happening, but this check remains
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   270
        # for completeness.)
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   271
        if not self._target_controller._is_block_size_compatible(
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   272
            selected_disk):
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   273
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   274
            LOGGER.error("Disk block size incompatible: %d",
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   275
                         selected_disk.geometry.blocksize)
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   276
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   277
            modal_dialog(_("The selected disk has a block size of %d bytes, "
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   278
                "which is incompatible for Oracle Solaris installation on "
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   279
                "this system."),
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   280
                _("Select another disk."))
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   281
            self._raise_error("Disk block size incompatible")
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   282
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   283
        # ERROR #3 - Tell disk_panel to do its bit if custom partitioning
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   284
        # selected. For whole disk we trust ZFS to get it right.
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   285
        if selected_disk.whole_disk:
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   286
            pool_size = selected_disk.disk_prop.dev_size
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   287
        else:
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   288
            try:
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   289
                solaris_partyslice = self._disk_panel.validate()
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   290
                pool_size = solaris_partyslice.size
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   291
            except NotOkToProceedError as nok:
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   292
                self._raise_error(str(nok))
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   293
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   294
        # Finish up with the logical section
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   295
        # Create swap and dump, as required
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   296
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   297
        (swap_type, swap_size, dump_type, dump_size) = \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   298
            self._target_controller.calc_swap_dump_size(
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   299
                self._target_controller.minimum_target_size,
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   300
                pool_size,
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   301
                swap_included=True)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   302
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   303
        desired_zpool = desired_root.get_descendants(name=ROOT_POOL,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   304
                                                     class_type=Zpool,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   305
                                                     not_found_is_err=True)[0]
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   306
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   307
        if swap_type == TargetController.SWAP_DUMP_ZVOL:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   308
            desired_zpool.delete_children(name="swap", class_type=Zvol)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   309
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   310
            swap_zvol = desired_zpool.add_zvol("swap",
1370
0e49021cc774 6987821 text installer fails on systems with large memory
Karen Tung <Karen.Tung@oracle.com>
parents: 1318
diff changeset
   311
                int(swap_size.get(units=Size.mb_units)), Size.mb_units,
0e49021cc774 6987821 text installer fails on systems with large memory
Karen Tung <Karen.Tung@oracle.com>
parents: 1318
diff changeset
   312
                use="swap")
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   313
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   314
        if dump_type == TargetController.SWAP_DUMP_ZVOL:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   315
            desired_zpool.delete_children(name="dump", class_type=Zvol)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   316
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   317
            dump_zvol = desired_zpool.add_zvol("dump",
1370
0e49021cc774 6987821 text installer fails on systems with large memory
Karen Tung <Karen.Tung@oracle.com>
parents: 1318
diff changeset
   318
                int(dump_size.get(units=Size.mb_units)), Size.mb_units,
0e49021cc774 6987821 text installer fails on systems with large memory
Karen Tung <Karen.Tung@oracle.com>
parents: 1318
diff changeset
   319
                use="dump", create_failure_ok=True)
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   320
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   321
        # Add export and export/home, if they do not already exist
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   322
        export_fs = desired_zpool.get_first_child(name=EXPORT_FS_NAME,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   323
            class_type=Filesystem)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   324
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   325
        if export_fs is None:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   326
            desired_zpool.add_filesystem(EXPORT_FS_NAME,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   327
                mountpoint=EXPORT_FS_MOUNTPOINT)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   328
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   329
        export_home_fs = desired_zpool.get_first_child(
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   330
            name=EXPORT_HOME_FS_NAME, class_type=Filesystem)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   331
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   332
        if export_home_fs is None:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   333
            desired_zpool.add_filesystem(EXPORT_HOME_FS_NAME)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   334
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   335
        # ERROR #4 - Target class final validation
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   336
        LOGGER.info("Performing Target.final_validation().")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   337
        errsvc.clear_error_list()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   338
        if not desired_root.final_validation():
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   339
            # Certain errors reported by final_validation don't concern us
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   340
            error_is_fatal = False
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   341
            all_errors = errsvc.get_all_errors()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   342
            for err in all_errors:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   343
                if isinstance(
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   344
                    err.error_data[liberrsvc.ES_DATA_EXCEPTION],
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   345
                    ShadowPhysical.SliceInUseError):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   346
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   347
                    LOGGER.warn("ShadowPhysical.SliceInUseError - not fatal")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   348
                    LOGGER.warn("Error: mod id %s, type %s",
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   349
                        err.get_mod_id(), str(err.get_error_type()))
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   350
                    LOGGER.warn("Error value: %s",
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   351
                        err.error_data[liberrsvc.ES_DATA_EXCEPTION].value)
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   352
                elif isinstance(
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   353
                    err.error_data[liberrsvc.ES_DATA_EXCEPTION],
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   354
                    ShadowPhysical.GPTPartitionInUseError):
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   355
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   356
                    LOGGER.warn("ShadowPhysical.GPTPartitionInUseError " \
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   357
                                "- not fatal")
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   358
                    LOGGER.warn("Error: mod id %s, type %s",
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   359
                        err.get_mod_id(), str(err.get_error_type()))
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   360
                    LOGGER.warn("Error value: %s",
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   361
                        err.error_data[liberrsvc.ES_DATA_EXCEPTION].value)
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   362
                else:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   363
                    error_is_fatal = True
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   364
                    LOGGER.error("Fatal validation error:")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   365
                    LOGGER.error("Error mod id %s, type: %s" % \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   366
                        (err.get_mod_id(), str(err.get_error_type())))
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   367
                    LOGGER.error("Error class: %r" % \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   368
                        err.error_data[liberrsvc.ES_DATA_EXCEPTION])
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   369
                    LOGGER.error("Error value: %s" % \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   370
                        err.error_data[liberrsvc.ES_DATA_EXCEPTION].value)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   371
                    LOGGER.error("Desired Targets in DOC:\n%s" % \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   372
                        desired_root.get_xml_tree_str())
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   373
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   374
            if error_is_fatal:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   375
                modal_dialog(_("Final validation failed."), "%s\n\n%s" % \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   376
                    (_("See log file for details."), DEFAULT_LOG_LOCATION))
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   377
                self._raise_error("final_validation failed")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   378
        LOGGER.info("final_validation passed.")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   379
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   380
        # WARNING #1 - disk is smaller than recommended size (whole_disk only)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   381
        if selected_disk.whole_disk:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   382
            if selected_disk.disk_prop is None or \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   383
                selected_disk.disk_prop.dev_size is None or \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   384
                selected_disk.disk_prop.dev_size < \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   385
                self._target_controller.recommended_target_size:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   386
1716
0cea9255024f 7097153 Advice seems oddly small for solaris partition
Geoffrey Hart <geoffrey.hart@oracle.com>
parents: 1644
diff changeset
   387
                LOGGER.info("Disk smaller than recommended minimum")
0cea9255024f 7097153 Advice seems oddly small for solaris partition
Geoffrey Hart <geoffrey.hart@oracle.com>
parents: 1644
diff changeset
   388
                LOGGER.info("Recommended minimum size is %s",
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   389
                    self._target_controller.recommended_target_size)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   390
                if selected_disk.disk_prop is not None and \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   391
                    selected_disk.disk_prop.dev_size is not None:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   392
                    LOGGER.info("Disk size is (%s)",
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   393
                        selected_disk.disk_prop.dev_size)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   394
                else:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   395
                    LOGGER.info("No size info available")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   396
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   397
                ok_to_proceed = modal_dialog(_("The selected disk is "
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   398
                    "smaller than the recommended minimum size."),
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   399
                    _("You may have difficulties upgrading the system "
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   400
                    "software and/or installing and running additional "
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   401
                    "applications."),
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   402
                    two_buttons=True)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   403
                if not ok_to_proceed:
1716
0cea9255024f 7097153 Advice seems oddly small for solaris partition
Geoffrey Hart <geoffrey.hart@oracle.com>
parents: 1644
diff changeset
   404
                    self._raise_error("Disk smaller than recommended minimum")
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   405
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   406
        # WARNING #2 - Solaris partition is smaller than recommended size
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   407
        # Identify the correct Solaris Partition or GPTPartition object.
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   408
        # (not whole_disk only)
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   409
        else:
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   410
            if isinstance(solaris_partyslice, Slice):
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   411
                solaris_partition = solaris_partyslice.parent
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   412
            else:
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   413
                solaris_partition = solaris_partyslice
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   414
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   415
            if solaris_partition.size < \
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   416
                self._target_controller.recommended_target_size:
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   417
1716
0cea9255024f 7097153 Advice seems oddly small for solaris partition
Geoffrey Hart <geoffrey.hart@oracle.com>
parents: 1644
diff changeset
   418
                LOGGER.info("Partition smaller than recommended minimum")
0cea9255024f 7097153 Advice seems oddly small for solaris partition
Geoffrey Hart <geoffrey.hart@oracle.com>
parents: 1644
diff changeset
   419
                LOGGER.info("Recommended minimum size is %s",
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   420
                    self._target_controller.recommended_target_size)
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   421
                LOGGER.info("Partition size is (%s)", solaris_partition.size)
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   422
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   423
                ok_to_proceed = modal_dialog(_("The selected partition is "
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   424
                    "smaller than the recommended minimum size."),
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   425
                    _("You may have difficulties upgrading the system "
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   426
                    "software and/or installing and running additional "
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   427
                    "applications."),
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   428
                    two_buttons=True)
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   429
                if not ok_to_proceed:
1716
0cea9255024f 7097153 Advice seems oddly small for solaris partition
Geoffrey Hart <geoffrey.hart@oracle.com>
parents: 1644
diff changeset
   430
                    self._raise_error("Partition smaller than recommended " 
0cea9255024f 7097153 Advice seems oddly small for solaris partition
Geoffrey Hart <geoffrey.hart@oracle.com>
parents: 1644
diff changeset
   431
                    "minimum")
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   432
1298
268fd28dea26 7068118 system after gui-install seems to lack swap entry in vfstab
Dermot <Dermot.McCluskey@Oracle.COM>
parents: 1229
diff changeset
   433
        # Save the TargetController in the DOC (used to retrieve the
268fd28dea26 7068118 system after gui-install seems to lack swap entry in vfstab
Dermot <Dermot.McCluskey@Oracle.COM>
parents: 1229
diff changeset
   434
        # minimum_target_size and call setup_vfstab_for_swap())
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   435
        profile = doc.volatile.get_first_child(
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   436
            name="GUI Install",
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   437
            class_type=InstallProfile)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   438
        if profile is not None:
1298
268fd28dea26 7068118 system after gui-install seems to lack swap entry in vfstab
Dermot <Dermot.McCluskey@Oracle.COM>
parents: 1229
diff changeset
   439
            profile.set_disk_data(self._target_controller)
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   440
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   441
        LOGGER.info("Validation succeeded. Desired Targets in DOC:\n%s",
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   442
            desired_root.get_xml_tree_str())
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   443
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   444
    #--------------------------------------------------------------------------
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   445
    # Signal handler methods
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   446
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   447
    def diskbutton_toggled(self, toggle_button, disk):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   448
        ''' Signal handler for "toggled" signal in _diskselectionhscrollbar.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   449
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   450
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   451
        if not toggle_button.get_active():
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   452
            # We're not interested when the button is being de-activated
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   453
            return
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   454
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   455
        if self._target_controller is not None:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   456
            try:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   457
                selected_disks = self._target_controller.select_disk(
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   458
                    disk, use_whole_disk=self._wholediskmode)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   459
            except SubSizeDiskError as err:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   460
                self._diskwarningimage.hide()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   461
                self._diskerrorimage.show()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   462
                markup = '<span font_desc="Bold">%s</span>' \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   463
                    % _("This disk is too small")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   464
                self._diskstatuslabel.set_markup(markup)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   465
                logging.debug("Selected disk [%s] is too small for " \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   466
                    "installation" % disk.ctd)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   467
                # Prevent user from proceeding or customisation
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   468
                self.set_back_next(back_sensitive=True, next_sensitive=False)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   469
                self._partitioningvbox.set_sensitive(False)
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   470
                # Hide the custom partitioning details
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   471
                self._disk_panel.hide()
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   472
                self._wholediskradio.set_active(True)
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   473
                return
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   474
            except BadDiskBlockSizeError as err:
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   475
                self._diskwarningimage.hide()
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   476
                self._diskerrorimage.show()
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   477
                markup = '<span font_desc="Bold">%s</span>' \
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   478
                    % _("This disk has an incompatible block size")
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   479
                self._diskstatuslabel.set_markup(markup)
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   480
                logging.debug("Selected disk [%s] blocksize is not " \
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   481
                    "compatible for installation" % disk.ctd)
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   482
                # Prevent user from proceeding or customisation
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   483
                self.set_back_next(back_sensitive=True, next_sensitive=False)
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   484
                self._partitioningvbox.set_sensitive(False)
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   485
                # Hide the custom partitioning details
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   486
                self._disk_panel.hide()
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   487
                self._wholediskradio.set_active(True)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   488
                return
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   489
            except BadDiskError, err:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   490
                LOGGER.error("ERROR: TargetController cannot " \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   491
                    "select disk [%s]" % disk.ctd)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   492
                modal_dialog(_("Internal Error"), "%s\n\n%s" % \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   493
                    (_("See log file for details."), DEFAULT_LOG_LOCATION))
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   494
                self.set_back_next(back_sensitive=True, next_sensitive=False)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   495
                return
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   496
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   497
            self._select_disk_panel()
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   498
            LOGGER.info("Disk [%s] selected" % selected_disks[0])
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   499
            self._diskwarningimage.hide()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   500
            self._diskerrorimage.hide()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   501
            self._diskstatuslabel.set_markup('')
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   502
            self._partitioningvbox.set_sensitive(True)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   503
            self._display_selected_disk_details()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   504
            self.set_back_next(back_sensitive=True, next_sensitive=True)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   505
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   506
    def installationdisk_wholediskradio_toggled(self, widget,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   507
        user_data=None):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   508
        ''' Signal handler for "toggled" event in _wholediskradio.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   509
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   510
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   511
        if not widget.get_active():
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   512
            # We're not interested when the button is being de-activated
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   513
            return
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   514
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   515
        self._wholediskmode = True
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   516
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   517
        selected_disk = self._target_controller.desired_disks[0]
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   518
        # Re-select the disk, this time with use_whole_disk=True
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   519
        try:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   520
            selected_disks = self._target_controller.select_disk(
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   521
                selected_disk,
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   522
                use_whole_disk=self._wholediskmode)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   523
        except BadDiskError, err:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   524
            LOGGER.error("ERROR: TargetController cannot " \
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   525
                "select disk [%s]" % selected_disk.ctd)
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   526
            modal_dialog(_("Internal Error"), "%s\n\n%s" % \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   527
                (_("See log file for details."), DEFAULT_LOG_LOCATION))
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   528
            self.set_back_next(back_sensitive=True, next_sensitive=False)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   529
            return
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   530
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   531
        self._select_disk_panel()
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   532
        LOGGER.info("Disk [%s] selected", selected_disk.ctd)
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   533
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   534
        self._display_selected_disk_details()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   535
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   536
    def installationdisk_partitiondiskradio_toggled(self, widget,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   537
        user_data=None):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   538
        ''' Signal handler for "toggled" event in _partitiondiskradio.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   539
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   540
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   541
        if not widget.get_active():
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   542
            # We're not interested when the button is being de-activated
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   543
            return
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   544
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   545
        self._wholediskmode = False
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   546
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   547
        selected_disk = self._target_controller.desired_disks[0]
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   548
        # Re-select the disk, this time with use_whole_disk=False
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   549
        try:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   550
            selected_disks = self._target_controller.select_disk(
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   551
                selected_disk,
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   552
                use_whole_disk=self._wholediskmode)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   553
        except BadDiskError, err:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   554
            LOGGER.error("ERROR: TargetController cannot " \
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   555
                "select disk [%s]" % selected_disk.ctd)
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   556
            modal_dialog(_("Internal Error"), "%s\n\n%s" % \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   557
                (_("See log file for details."), DEFAULT_LOG_LOCATION))
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   558
            self.set_back_next(back_sensitive=True, next_sensitive=False)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   559
            return
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   560
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   561
        self._select_disk_panel()
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   562
        LOGGER.info("Disk [%s] selected" % selected_disk.ctd)
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   563
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   564
        self._display_selected_disk_details()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   565
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   566
    def viewport_adjustment_changed(self, adjustment, scrollbar):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   567
        ''' Signal handler for "changed" event in _diskselectionhscrollbar.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   568
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   569
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   570
        lower = adjustment.get_lower()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   571
        upper = adjustment.get_upper()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   572
        pagesize = adjustment.get_page_size()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   573
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   574
        if (upper - lower) <= pagesize:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   575
            scrollbar.hide()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   576
        else:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   577
            scrollbar.show()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   578
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   579
    #--------------------------------------------------------------------------
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   580
    # Private methods
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   581
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   582
    def _process_td_results(self):
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   583
        '''
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   584
            If TD completed successfully, the attributes
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   585
            self._td_disks and self._target_controller will be set.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   586
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   587
            In any event self._td_complete will be set to True.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   588
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   589
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   590
        self._td_disks = list()
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   591
        self._target_controller = None
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   592
        self._selected_disk = None
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   593
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   594
        # Fetch the Disk objects from "discovered targets" in DOC
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   595
        engine = InstallEngine.get_instance()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   596
        doc = engine.data_object_cache
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   597
        discovered_root = None
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   598
        try:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   599
            discovered_root = doc.get_descendants(name=Target.DISCOVERED,
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   600
                class_type=Target, max_depth=2, max_count=1,
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   601
                not_found_is_err=True)[0]
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   602
        except ObjectNotFoundError, err:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   603
            LOGGER.error("TD didn't create 'discovered' Target: [%s]" % \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   604
                str(err))
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   605
            return
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   606
        LOGGER.info("TD XML:\n%s" % discovered_root.get_xml_tree_str())
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   607
        try:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   608
            self._td_disks = discovered_root.get_children(class_type=Disk,
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   609
                not_found_is_err=True)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   610
        except ObjectNotFoundError, err:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   611
            LOGGER.error("No Disks in 'discovered' Target: [%s]" % \
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   612
                str(err))
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   613
            LOGGER.error("TD XML:\n%s" % \
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   614
                discovered_root.get_xml_tree_str())
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   615
            return
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   616
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   617
        # Only retain those disks that match the user's selected disk types
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   618
        profile = doc.volatile.get_first_child(name="GUI Install",
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   619
                                               class_type=InstallProfile)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   620
        if profile is None:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   621
            raise RuntimeError("INTERNAL ERROR: Unable to retrieve "
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   622
                "InstallProfile from DataObjectCache")
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   623
        LOGGER.debug("Including local disks? : %s", profile.show_local)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   624
        LOGGER.debug("Including iSCSI disks? : %s", profile.show_iscsi)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   625
        matching_disks = list()
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   626
        for disk in self._td_disks:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   627
            if profile.show_iscsi and \
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   628
                disk.disk_prop is not None and \
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   629
                disk.disk_prop.dev_type == "iSCSI":
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   630
                matching_disks.append(disk)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   631
                LOGGER.debug("Including (iSCSI) disk: %s", disk.ctd)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   632
                continue
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   633
            if profile.show_local and \
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   634
                (disk.disk_prop is None or \
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   635
                disk.disk_prop.dev_type != "iSCSI"):
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   636
                matching_disks.append(disk)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   637
                LOGGER.debug("Including (non-iSCSI) disk: %s", disk.ctd)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   638
                continue
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   639
            LOGGER.debug("Excluding disk: %s", disk.ctd)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   640
        self._td_disks = matching_disks
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   641
        if not self._td_disks:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   642
            LOGGER.error("No discovered disks match user criteria")
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   643
            LOGGER.error("Criteria: local disks? : %s", profile.show_local)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   644
            LOGGER.error("Criteria: iSCSI disks? : %s", profile.show_iscsi)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   645
            return
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   646
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   647
        # Set up the TargetController
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   648
        LOGGER.info("TD found %d disks matching criteria", len(self._td_disks))
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   649
        self._target_controller = TargetController(doc)
1754
90688163755c 7183018 Gui livecd is not using size from image.info but using fallback image size
swati sarraf <swati.sarraf@oracle.com>
parents: 1752
diff changeset
   650
        try:
90688163755c 7183018 Gui livecd is not using size from image.info but using fallback image size
swati sarraf <swati.sarraf@oracle.com>
parents: 1752
diff changeset
   651
            # Get the actual size from the image_info file 
90688163755c 7183018 Gui livecd is not using size from image.info but using fallback image size
swati sarraf <swati.sarraf@oracle.com>
parents: 1752
diff changeset
   652
            image_size = Size(str(get_image_size(LOGGER)) + Size.mb_units) 
90688163755c 7183018 Gui livecd is not using size from image.info but using fallback image size
swati sarraf <swati.sarraf@oracle.com>
parents: 1752
diff changeset
   653
        except: 
90688163755c 7183018 Gui livecd is not using size from image.info but using fallback image size
swati sarraf <swati.sarraf@oracle.com>
parents: 1752
diff changeset
   654
            # if it fails to get the image size, pass fallback image size  
90688163755c 7183018 Gui livecd is not using size from image.info but using fallback image size
swati sarraf <swati.sarraf@oracle.com>
parents: 1752
diff changeset
   655
            image_size = FALLBACK_IMAGE_SIZE
90688163755c 7183018 Gui livecd is not using size from image.info but using fallback image size
swati sarraf <swati.sarraf@oracle.com>
parents: 1752
diff changeset
   656
            LOGGER.debug("Unable to get image size")
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   657
        # First, let TargetController choose an initially-selected disk,
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   658
        # as per its rules.
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   659
        try:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   660
            # Note: we are assuming that TargetController.initialize()
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   661
            # selects a disk not in whole_disk mode
1754
90688163755c 7183018 Gui livecd is not using size from image.info but using fallback image size
swati sarraf <swati.sarraf@oracle.com>
parents: 1752
diff changeset
   662
            selected_disks = self._target_controller.initialize( 
90688163755c 7183018 Gui livecd is not using size from image.info but using fallback image size
swati sarraf <swati.sarraf@oracle.com>
parents: 1752
diff changeset
   663
                image_size=image_size)
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   664
        except BadDiskError, err:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   665
            LOGGER.error("TargetController failed to select an "
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   666
                "initial disk: [%s]", err)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   667
            return
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   668
        self._selected_disk = selected_disks[0]
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   669
        LOGGER.info("Disk [%s] selected" % self._selected_disk.ctd)
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   670
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   671
        # If TargetController's choice for initial disk does not match
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   672
        # users choices (iSCSI vs local), then select the first remaining
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   673
        # suitable disk
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   674
        for td_disk in self._td_disks:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   675
            if td_disk.name_matches(self._selected_disk):
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   676
                # TC's initial disk is in our filtered list - carry on.
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   677
                break
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   678
        else:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   679
            LOGGER.debug("TargetController's initial disk does not match "
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   680
                         "criteria, so picking a new one")
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   681
            for td_disk in self._td_disks:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   682
                try:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   683
                    selected_disks = self._target_controller.select_disk(
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   684
                        td_disk, use_whole_disk=self._wholediskmode)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   685
                except SubSizeDiskError as err:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   686
                    LOGGER.debug("TC says disk is too small: [%s] [%s]",
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   687
                                 td_disk, err)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   688
                    continue
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   689
                except BadDiskError, err:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   690
                    LOGGER.debug("TC says disk is not suitable: [%s] [%s]",
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   691
                                 td_disk, err)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   692
                    continue
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   693
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   694
                self._selected_disk = selected_disks[0]
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   695
                LOGGER.info("Disk [%s] selected" % self._selected_disk.ctd)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   696
                break
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   697
            else:
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   698
                LOGGER.error("NONE OF THE REAMINING DISKS ARE SUITABLE")
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   699
                self._selected_disk = None
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   700
                return
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   701
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   702
        LOGGER.info("TD AND TC FINISHED SUCCESSFULLY!")
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   703
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   704
    def _set_screen_titles(self):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   705
        # NB This messing about is because we want to re-use the existing
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   706
        # localized size formatting string from C, but the Python formatting
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   707
        # options are different
1716
0cea9255024f 7097153 Advice seems oddly small for solaris partition
Geoffrey Hart <geoffrey.hart@oracle.com>
parents: 1644
diff changeset
   708
        size_str = _("Recommended minimum: %lldGB Minimum: %.1fGB")
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   709
        size_str = size_str.replace('%lld', '%s')
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   710
        size_str = size_str.replace('%.1f', '%s')
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   711
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   712
        if self._target_controller is None:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   713
            # Blank out the size values until they are available
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   714
            size_str = size_str.replace('%s', '')
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   715
        else:
1758
ecfb8c75e5a4 7187287 Bug 7163694 fixes in gui-install/disk_screen.py are removed due to mismerge b/w bug 7163694 &7183018
swati sarraf <swati.sarraf@oracle.com>
parents: 1754
diff changeset
   716
            rec_orig = self._target_controller.recommended_target_size.get(
ecfb8c75e5a4 7187287 Bug 7163694 fixes in gui-install/disk_screen.py are removed due to mismerge b/w bug 7163694 &7183018
swati sarraf <swati.sarraf@oracle.com>
parents: 1754
diff changeset
   717
                units=Size.gb_units)
ecfb8c75e5a4 7187287 Bug 7163694 fixes in gui-install/disk_screen.py are removed due to mismerge b/w bug 7163694 &7183018
swati sarraf <swati.sarraf@oracle.com>
parents: 1754
diff changeset
   718
            rec_roundup = (ceil(rec_orig * 10)) * 0.1 
ecfb8c75e5a4 7187287 Bug 7163694 fixes in gui-install/disk_screen.py are removed due to mismerge b/w bug 7163694 &7183018
swati sarraf <swati.sarraf@oracle.com>
parents: 1754
diff changeset
   719
            rec_size = locale.format('%.1f', rec_roundup)
ecfb8c75e5a4 7187287 Bug 7163694 fixes in gui-install/disk_screen.py are removed due to mismerge b/w bug 7163694 &7183018
swati sarraf <swati.sarraf@oracle.com>
parents: 1754
diff changeset
   720
            min_orig = self._target_controller.minimum_target_size.get(
ecfb8c75e5a4 7187287 Bug 7163694 fixes in gui-install/disk_screen.py are removed due to mismerge b/w bug 7163694 &7183018
swati sarraf <swati.sarraf@oracle.com>
parents: 1754
diff changeset
   721
                units=Size.gb_units)
ecfb8c75e5a4 7187287 Bug 7163694 fixes in gui-install/disk_screen.py are removed due to mismerge b/w bug 7163694 &7183018
swati sarraf <swati.sarraf@oracle.com>
parents: 1754
diff changeset
   722
            min_roundup = (ceil(min_orig * 10)) * 0.1 
ecfb8c75e5a4 7187287 Bug 7163694 fixes in gui-install/disk_screen.py are removed due to mismerge b/w bug 7163694 &7183018
swati sarraf <swati.sarraf@oracle.com>
parents: 1754
diff changeset
   723
            min_size = locale.format('%.1f', min_roundup)
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   724
            size_str = size_str % (rec_size, min_size)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   725
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   726
        self.set_titles(_("Disk Selection"),
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   727
            _("Where should Oracle Solaris be installed?"),
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   728
            size_str)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   729
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   730
    def _show_screen_for_td_not_complete(self):
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   731
        self._diskstatuslabel.set_markup('')
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   732
        self._set_screen_titles()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   733
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   734
        # Only create the widgets which don't come from Glade once
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   735
        if self._finding_disks_vbox is None:
1439
7375801f1f12 7085402 gui-install introduces localiziable string with non-swappable parameters
Dermot <Dermot.McCluskey@Oracle.COM>
parents: 1401
diff changeset
   736
            self._finding_disks_vbox, self._busy_label = \
1401
d146dce1de3d 7080703 [A11Y] several accessibility regressions within the new GUI Installer
John Fischer <john.fischer@oracle.com>
parents: 1370
diff changeset
   737
                self._create_finding_disks_vbox()
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   738
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   739
        empty_container(self._disksviewport)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   740
        self._disksviewport.add(self._finding_disks_vbox)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   741
        self._disksviewport.modify_bg(gtk.STATE_NORMAL, COLOR_WHITE)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   742
        self._disksviewport.show_all()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   743
        self._toplevel.show()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   744
1439
7375801f1f12 7085402 gui-install introduces localiziable string with non-swappable parameters
Dermot <Dermot.McCluskey@Oracle.COM>
parents: 1401
diff changeset
   745
        self._busy_label.grab_focus()
1401
d146dce1de3d 7080703 [A11Y] several accessibility regressions within the new GUI Installer
John Fischer <john.fischer@oracle.com>
parents: 1370
diff changeset
   746
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   747
        self.set_back_next(back_sensitive=True, next_sensitive=False)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   748
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   749
    def _show_screen_for_td_complete(self):
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   750
        if not get_td_results_state():
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   751
            self._process_td_results()
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   752
            set_td_results_state(True)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   753
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   754
        self._diskstatuslabel.set_markup('')
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   755
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   756
        # If an error occurred in TD or TC, then inform the user
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   757
        # ERROR #1 - TD didn't find any Disks
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   758
        # ERROR #2 - TC couldn't select an initial Disk
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   759
        error_occurred = False
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   760
        if not self._td_disks or self._selected_disk is None:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   761
            error_occurred = True
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   762
            markup = '<span font_desc="Bold">%s</span>' % \
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   763
                _("No suitable disks were found.")
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   764
            self._diskstatuslabel.set_markup(markup)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   765
            self._diskerrorimage.show()
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   766
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   767
        self._set_screen_titles()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   768
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   769
        # Recreate the disk buttons each time, as each execution of
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   770
        # TD can find different disks
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   771
        self._disk_buttons_hbuttonbox = \
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   772
            self._create_disk_buttons_hbuttonbox()
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   773
        self._create_disk_buttons()
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   774
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   775
        empty_container(self._disksviewport)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   776
        self._disksviewport.add(self._disk_buttons_hbuttonbox)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   777
        self._disksviewport.modify_bg(gtk.STATE_NORMAL, COLOR_WHITE)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   778
        self._disksviewport.show_all()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   779
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   780
        # Hook up the scrollbar to the viewport
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   781
        viewportadjustment = self._diskselectionhscrollbar.get_adjustment()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   782
        gobject.GObject.connect(viewportadjustment,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   783
            "changed",
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   784
            self.viewport_adjustment_changed,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   785
            self._diskselectionhscrollbar)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   786
        self._disksviewport.set_hadjustment(viewportadjustment)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   787
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   788
        if not error_occurred:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   789
            # Match the currently selected disk to one of the disk
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   790
            # radio buttons and make that button active
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   791
            active_button = None
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   792
            for button in self._disk_buttons:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   793
                td_disk = gobject.GObject.get_data(button, "Disk")
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   794
                if td_disk.name_matches(self._selected_disk):
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   795
                    button.set_active(True)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   796
                    active_button = button
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   797
                    break
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   798
            else:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   799
                # _process_td_results should have prevented this
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   800
                raise RuntimeError("INTERNAL ERROR: selected disk does not"
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   801
                                   " match any disk icon")
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   802
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   803
            # Set whole disk/partition disk radio button to initial setting
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   804
            if self._wholediskmode:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   805
                self._wholediskradio.set_active(True)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   806
            else:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   807
                self._partitiondiskradio.set_active(True)
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   808
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   809
            # Show the disk partitioning radio buttons and associated widgets
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   810
            self._diskradioalignment.show_all()
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   811
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   812
            self._display_selected_disk_details()
1401
d146dce1de3d 7080703 [A11Y] several accessibility regressions within the new GUI Installer
John Fischer <john.fischer@oracle.com>
parents: 1370
diff changeset
   813
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   814
            if active_button:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   815
                active_button.grab_focus()
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   816
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   817
            self._partitioningvbox.show()
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   818
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   819
        self._toplevel.show()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   820
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   821
        if error_occurred:
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   822
            self.set_back_next(back_sensitive=True, next_sensitive=False)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   823
        else:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   824
            self.set_back_next(back_sensitive=True, next_sensitive=True)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   825
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   826
    def _td_completion_monitor(self):
1229
891fd1030a86 7059258 gui-install hangs while a URL is opened from an clicking on an image
John Fischer <john.fischer@oracle.com>
parents: 1204
diff changeset
   827
        '''
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   828
            Monitors the completion status of target discovery and shows
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   829
            the disk & partitioning controls if this screen is mapped.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   830
        '''
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   831
        if is_discovery_complete():
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   832
            if (self._toplevel is not None) and \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   833
                (self._toplevel.flags() & gtk.MAPPED):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   834
                self._show_screen_for_td_complete()
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   835
            self._monitor_timeout_id = None
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   836
            return False
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   837
        else:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   838
            return True
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   839
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   840
    def _display_selected_disk_details(self):
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   841
        self._select_disk_panel()
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   842
        selected_disks = self._target_controller.desired_disks
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   843
        if selected_disks:
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   844
            if self._wholediskmode:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   845
                # Show "Entire disk will be erased" warning
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   846
                self._diskwarninghbox.show()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   847
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   848
                # Hide the custom disk partitioning details.
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   849
                self._disk_panel.hide()
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   850
            else:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   851
                # Hide "Entire disk will be erased" warning
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   852
                self._diskwarninghbox.hide()
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   853
                self._disk_panel.display(selected_disks[0],
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   854
                    self._target_controller)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   855
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   856
    def _create_finding_disks_vbox(self):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   857
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   858
            Creates the new widgets required for the "Finding Disks..."
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   859
            version of the screen.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   860
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   861
            This method should only be called once per execution
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   862
            of the app.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   863
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   864
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   865
        finding_disks_vbox = gtk.VBox(homogeneous=False, spacing=0)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   866
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   867
        label = gtk.Label()
1439
7375801f1f12 7085402 gui-install introduces localiziable string with non-swappable parameters
Dermot <Dermot.McCluskey@Oracle.COM>
parents: 1401
diff changeset
   868
        markup_str = DiskScreen.BUSY_MARKUP % _(DiskScreen.BUSY_TEXT)
7375801f1f12 7085402 gui-install introduces localiziable string with non-swappable parameters
Dermot <Dermot.McCluskey@Oracle.COM>
parents: 1401
diff changeset
   869
        label.set_markup(markup_str)
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   870
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   871
        busyimage = gtk.image_new_from_file(IMAGE_DIR + "/"
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   872
            "gnome-spinner.gif")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   873
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   874
        finding_disks_vbox.pack_start(label, expand=False,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   875
            fill=False, padding=0)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   876
        finding_disks_vbox.pack_end(busyimage, expand=False,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   877
            fill=False, padding=0)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   878
1401
d146dce1de3d 7080703 [A11Y] several accessibility regressions within the new GUI Installer
John Fischer <john.fischer@oracle.com>
parents: 1370
diff changeset
   879
        return finding_disks_vbox, label
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   880
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   881
    def _create_disk_button_icon(self, disk):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   882
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   883
           Creates a disk button icon appropriate for the specificed disk.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   884
        '''
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   885
        if disk.disk_prop is not None and disk.disk_prop.dev_type == "iSCSI":
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   886
            # use our own iSCSI disk icon
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   887
            disk_pixbuf = gtk.gdk.pixbuf_new_from_file(
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   888
                os.path.join(IMAGE_DIR, "iscsi_disk.png"))
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   889
            disk_width = disk_pixbuf.get_width()
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   890
            disk_height = disk_pixbuf.get_height()
1318
cf440b5a6594 7021433 Changes needed to GUI to add support for CRO information
Dermot <Dermot.McCluskey@Oracle.COM>
parents: 1307
diff changeset
   891
        else:
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   892
            # use our own generic disk icon
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   893
            disk_pixbuf = gtk.gdk.pixbuf_new_from_file(
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   894
                os.path.join(IMAGE_DIR, "generic_disk.png"))
1318
cf440b5a6594 7021433 Changes needed to GUI to add support for CRO information
Dermot <Dermot.McCluskey@Oracle.COM>
parents: 1307
diff changeset
   895
            disk_width = disk_pixbuf.get_width()
cf440b5a6594 7021433 Changes needed to GUI to add support for CRO information
Dermot <Dermot.McCluskey@Oracle.COM>
parents: 1307
diff changeset
   896
            disk_height = disk_pixbuf.get_height()
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   897
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   898
        emblem_iconinfo = None
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   899
        # Apply any additional emblems appropriate for the disk
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   900
        # Too small or incompatible block_size
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   901
        if disk.disk_prop.dev_size < \
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   902
            self._target_controller.minimum_target_size or \
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   903
            not self._target_controller._is_block_size_compatible(disk):
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   904
            emblem_iconinfo = self._icon_theme.lookup_icon("dialog-error",
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   905
                16, 0)
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   906
        # No readable partition table / disk label
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   907
        elif disk.label is None:
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   908
            emblem_iconinfo = self._icon_theme.lookup_icon("dialog-warning",
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   909
                16, 0)
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   910
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   911
        if emblem_iconinfo is not None:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   912
            emblem_filename = emblem_iconinfo.get_filename()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   913
            emblem_pixbuf = gtk.gdk.pixbuf_new_from_file(emblem_filename)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   914
            emblem_width = emblem_pixbuf.get_width()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   915
            emblem_height = emblem_pixbuf.get_height()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   916
            emblem_pixbuf.composite(disk_pixbuf,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   917
                disk_width - emblem_width,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   918
                disk_height - emblem_height,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   919
                emblem_width,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   920
                emblem_height,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   921
                disk_width - emblem_width,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   922
                disk_height - emblem_height,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   923
                1,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   924
                1,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   925
                gtk.gdk.INTERP_BILINEAR,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   926
                192)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   927
        disk_image = gtk.image_new_from_pixbuf(disk_pixbuf)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   928
        disk_image.show()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   929
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   930
        return disk_image
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   931
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   932
    def _set_disk_button_icon(self, button, image):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   933
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   934
            Sets the icon for button to image
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   935
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   936
        vbox = button.get_data("iconvbox")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   937
        oldimage = button.get_data("icon")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   938
        if oldimage is not None:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   939
            oldimage.destroy()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   940
        vbox.pack_start(image, True, True, 0)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   941
        button.set_data("icon", image)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   942
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   943
    def _create_disk_buttons(self):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   944
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   945
            Creates the graphical disk selection radio button widgets
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   946
        '''
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   947
        self._disk_buttons = list()
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   948
        first_button = None
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   949
        for td_disk in self._td_disks:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   950
            name, summary = td_disk.get_details()
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   951
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   952
            # If applicable, also show the iSCSI LUN for this disk in the
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   953
            # tooltip, by looking at the saved device->LUN dictionary in
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   954
            # the Iscsi obj in DOC
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   955
            if td_disk.ctd is not None:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   956
                doc = InstallEngine.get_instance().doc
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   957
                iscsi = doc.volatile.get_first_child(name=ISCSI_LABEL,
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   958
                                                     class_type=Iscsi)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   959
                if iscsi:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   960
                    if td_disk.ctd in iscsi.iscsi_dict:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   961
                        summary += "\n" + \
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   962
                            _("iSCSI LUN : %s") % \
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   963
                                iscsi.iscsi_dict[td_disk.ctd].lun_num
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   964
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   965
            label = gtk.Label(name)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   966
            if first_button is None:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   967
                button = gtk.RadioButton()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   968
                first_button = button
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   969
            else:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   970
                # Add subsequent buttons to the same RadioButton group
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   971
                # as the first one
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   972
                button = gtk.RadioButton(group=first_button)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   973
            button.set_mode(False)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   974
            button.set_relief(gtk.RELIEF_NONE)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   975
            button.set_tooltip_text(summary)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   976
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   977
            # Attach the Disk object to the RadioButton for future retrieval
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   978
            gobject.GObject.set_data(button, "Disk", td_disk)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   979
            # Save the buttons so we can activate them later
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   980
            self._disk_buttons.append(button)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   981
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   982
            align = gtk.Alignment(0.5, 0.5, 0, 0)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   983
            button.add(align)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   984
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   985
            vbox = gtk.VBox(homogeneous=False, spacing=0)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   986
            align.add(vbox)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   987
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   988
            vbox.pack_end(label, expand=False, fill=False, padding=0)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   989
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   990
            button.set_data("iconvbox", vbox)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   991
            self._set_disk_button_icon(button,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   992
                self._create_disk_button_icon(td_disk))
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   993
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   994
            self._disk_buttons_hbuttonbox.pack_start(button,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   995
                expand=False, fill=False, padding=0)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   996
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   997
            button.connect("toggled",
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   998
                self.diskbutton_toggled,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   999
                td_disk)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1000
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1001
        # Update disk button icons if icon theme changes
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1002
        self._icon_theme.connect("changed", self._icon_theme_changed)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1003
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1004
    def _create_disk_buttons_hbuttonbox(self):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1005
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1006
            Creates the horizontal container widget for disk buttons.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1007
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1008
            This method should only be called once per execution
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1009
            of the app.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1010
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1011
        disk_buttons_hbuttonbox = gtk.HButtonBox()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1012
        disk_buttons_hbuttonbox.set_spacing(36)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1013
        disk_buttons_hbuttonbox.set_layout(gtk.BUTTONBOX_START)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1014
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1015
        return disk_buttons_hbuttonbox
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1016
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1017
    def _icon_theme_changed(self, theme):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1018
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1019
            Signal handler for when icon theme is changed. Updates disk
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1020
            button icons to correspond to new icon theme style
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1021
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1022
        for button in self._disk_buttons:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1023
            disk = button.get_data("Disk")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1024
            self._set_disk_button_icon(button,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1025
                self._create_disk_button_icon(disk))
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1026
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1027
    def _raise_error(self, msg):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1028
        ''' Raise the NotOkToProceed exception.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1029
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1030
            Before raising the exception,  we re-display the current disk's
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1031
            details.  This is mainly relevant for the Fdisk panel, to
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1032
            ensure the partitions are setup for the user to continue
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1033
            editing them, once the dialog has been dismissed.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1034
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1035
        self._display_selected_disk_details()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1036
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1037
        raise NotOkToProceedError(msg)
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1038
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1039
    def _select_disk_panel(self):
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1040
        ''' Sets the correct disk_panel object type (gpt_panel or fdisk_panel)
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1041
            for the currently selected disk.
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1042
        '''
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1043
        selected_disks = self._target_controller.desired_disks
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1044
        if not selected_disks:
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1045
            return
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1046
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1047
        selected_disk = selected_disks[0]
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1048
        if selected_disk.label == "GPT" and \
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1049
            not isinstance(self._disk_panel, GPTPanel):
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1050
            self._disk_panel.hide()
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1051
            self._custompartitionbox.remove(self._disk_panel.toplevel)
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1052
            self._disk_panel = self._gpt_panel
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1053
            self._custompartitionbox.pack_start(self._disk_panel.toplevel,
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1054
                expand=True, fill=True, padding=0)
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1055
        elif selected_disk.label == "VTOC" and \
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1056
            not isinstance(self._disk_panel, FdiskPanel):
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1057
            self._disk_panel.hide()
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1058
            self._custompartitionbox.remove(self._disk_panel.toplevel)
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1059
            self._disk_panel = self._fdisk_panel
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1060
            self._custompartitionbox.pack_start(self._disk_panel.toplevel,
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1061
                expand=True, fill=True, padding=0)