usr/src/cmd/gui-install/src/disk_screen.py
author swati sarraf <swati.sarraf@oracle.com>
Fri, 20 Jul 2012 16:19:17 -0700
changeset 1752 5c51d42f1aaf
parent 1716 0cea9255024f
child 1754 90688163755c
permissions -rw-r--r--
7163694 Interactive installer's display of min/rec install device size display should be rounded up
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
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    39
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    40
import osol_install.errsvc as errsvc
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    41
import osol_install.liberrsvc as liberrsvc
1752
5c51d42f1aaf 7163694 Interactive installer's display of min/rec install device size display should be rounded up
swati sarraf <swati.sarraf@oracle.com>
parents: 1716
diff changeset
    42
from math import ceil 
1204
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
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    56
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
    57
    BadDiskError, BadDiskBlockSizeError, SubSizeDiskError, DEFAULT_ZPOOL_NAME
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    58
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
    59
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
    60
from solaris_install.target.shadow.physical import ShadowPhysical
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    61
from solaris_install.target.size import Size
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    62
1298
268fd28dea26 7068118 system after gui-install seems to lack swap entry in vfstab
Dermot <Dermot.McCluskey@Oracle.COM>
parents: 1229
diff changeset
    63
ROOT_POOL = DEFAULT_ZPOOL_NAME
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    64
EXPORT_FS_NAME = 'export'
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    65
EXPORT_FS_MOUNTPOINT = '/export'
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    66
EXPORT_HOME_FS_NAME = 'export/home'
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    67
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    68
LOGGER = None
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
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    71
class DiskScreen(BaseScreen):
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
        The Disk screen.
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
        There are two distinct versions of this screen:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    76
        - 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
    77
          execution, they will see the "Finding Disks..." version,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    78
          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
    79
          button disabled
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    80
        - 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
    81
          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
    82
          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
    83
          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
    84
          the bottom.  The Next button is enabled.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    85
    '''
1439
7375801f1f12 7085402 gui-install introduces localiziable string with non-swappable parameters
Dermot <Dermot.McCluskey@Oracle.COM>
parents: 1401
diff changeset
    86
    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
    87
    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
    88
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    89
    #--------------------------------------------------------------------------
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    90
    # API methods
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
    def __init__(self, builder):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    93
        ''' Initializer method - called from constructor.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    94
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    95
            Params:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    96
            - 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
    97
              widgets from Glade XML files.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    98
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
    99
            Returns: Nothing
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
        global LOGGER
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
        LOGGER = logging.getLogger(INSTALL_LOGGER_NAME)
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
        super(DiskScreen, self).__init__(builder)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   106
        self.name = "Disk Screen"
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   107
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   108
        self._monitor_timeout_id = None
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   109
        self._td_disks = list()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   110
        self._selected_disk = None
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   111
        self._target_controller = None
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   112
        self._wholediskmode = False
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   113
        self._disk_buttons = list()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   114
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   115
        self._toplevel = None
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
        # 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
   118
        self._finding_disks_vbox = None
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   119
        # 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
   120
        self._disk_buttons_hbuttonbox = None
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   121
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   122
        self._disksviewport = self.builder.get_object("disksviewport")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   123
        self._diskselectionhscrollbar = self.builder.get_object(
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   124
            "diskselectionhscrollbar")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   125
        self._diskerrorimage = self.builder.get_object("diskerrorimage")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   126
        self._diskwarningimage = self.builder.get_object("diskwarningimage")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   127
        self._diskstatuslabel = self.builder.get_object("diskstatuslabel")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   128
        self._partitioningvbox = self.builder.get_object("partitioningvbox")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   129
        self._diskradioalignment = self.builder.get_object(
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   130
            "diskradioalignment")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   131
        self._diskwarninghbox = self.builder.get_object("diskwarninghbox")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   132
        self._wholediskradio = self.builder.get_object("wholediskradio")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   133
        self._partitiondiskradio = self.builder.get_object(
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   134
            "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
   135
        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
   136
            "custompartitionbox")
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   137
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   138
        if None in [self._disksviewport, self._diskselectionhscrollbar,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   139
            self._diskerrorimage, self._diskwarningimage,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   140
            self._diskstatuslabel, self._partitioningvbox,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   141
            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
   142
            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
   143
            self._custompartitionbox]:
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   144
            modal_dialog(_("Internal error"), GLADE_ERROR_MSG)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   145
            raise RuntimeError(GLADE_ERROR_MSG)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   146
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   147
        # 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
   148
        # 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
   149
        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
   150
        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
   151
        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
   152
        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
   153
            expand=True, fill=True, padding=0)
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   154
        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
   155
        self._busy_label = None
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   156
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   157
    def enter(self):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   158
        ''' Show the Disk Screen.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   159
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   160
            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
   161
            via the Back and Next buttons.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   162
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   163
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   164
        self._toplevel = self.set_main_window_content("diskselectiontoplevel")
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
        # Screen-specific configuration
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   167
        self.activate_stage_label("diskselectionstagelabel")
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   168
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   169
        # 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
   170
        self._partitioningvbox.hide()
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   171
        self._diskselectionhscrollbar.hide()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   172
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   173
        if is_discovery_complete():
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   174
            self._show_screen_for_td_complete()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   175
        else:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   176
            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
   177
            # 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
   178
            # screen multiple times before TD completes
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   179
            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
   180
                self._monitor_timeout_id = \
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   181
                    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
   182
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   183
        return False
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
    def go_back(self):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   186
        ''' 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
   187
            go back to the previous screen.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   188
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   189
            Does nothing.
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
        pass
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
    def validate(self):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   194
        ''' Validate the user selections before proceeding.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   195
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   196
            Perform a series of validations on the deleted
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   197
            disk and the selected partitions, if appropriate.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   198
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   199
            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
   200
            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
   201
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   202
            Raises: NotOkToProceedError
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
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   205
        LOGGER.info("Starting validation.")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   206
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   207
        # 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
   208
        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
   209
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   210
        # 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
   211
        # 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
   212
        #    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
   213
        #
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   214
        # 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
   215
        #    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
   216
        #
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   217
        # 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
   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
        # 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
   220
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   221
        engine = InstallEngine.get_instance()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   222
        doc = engine.data_object_cache
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   223
        desired_root = doc.get_descendants(name=Target.DESIRED,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   224
            class_type=Target,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   225
            max_depth=2,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   226
            max_count=1,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   227
            not_found_is_err=True)[0]
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   228
        # 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
   229
        # check for multiple selected disks
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   230
        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
   231
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   232
        # ERROR #1 - No disk selected
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   233
        # (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
   234
        # for completeness.)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   235
        if selected_disk is None:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   236
            LOGGER.error("No disk selected.")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   237
            modal_dialog(_("No disk has been selected for "
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   238
                "Oracle Solaris installation."),
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   239
                _("Select a disk."))
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   240
            self._raise_error("No disk selected")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   241
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   242
        # ERROR #2 - No suitable disk selected
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   243
        # (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
   244
        # for completeness.)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   245
        if selected_disk.disk_prop is None or \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   246
            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
   247
            selected_disk.disk_prop.dev_size < \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   248
            self._target_controller.minimum_target_size:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   249
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   250
            LOGGER.error("Disk too small.")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   251
            LOGGER.error("Minimum size is %s" % \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   252
                self._target_controller.minimum_target_size)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   253
            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
   254
                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
   255
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   256
                LOGGER.error("Disk size is (%s)." % \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   257
                    selected_disk.disk_prop.dev_size)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   258
            else:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   259
                LOGGER.error("No size info available.")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   260
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   261
            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
   262
                "Oracle Solaris installation."),
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   263
                _("Select another disk."))
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   264
            self._raise_error("Disk too small")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   265
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   266
        # 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
   267
        # (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
   268
        # 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
   269
        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
   270
            selected_disk):
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   271
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   272
            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
   273
                         selected_disk.geometry.blocksize)
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   274
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   275
            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
   276
                "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
   277
                "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
   278
                _("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
   279
            self._raise_error("Disk block size incompatible")
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   280
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   281
        # 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
   282
        # 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
   283
        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
   284
            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
   285
        else:
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   286
            try:
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   287
                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
   288
                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
   289
            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
   290
                self._raise_error(str(nok))
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   291
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   292
        # 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
   293
        # Create swap and dump, as required
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   294
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   295
        (swap_type, swap_size, dump_type, dump_size) = \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   296
            self._target_controller.calc_swap_dump_size(
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   297
                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
   298
                pool_size,
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   299
                swap_included=True)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   300
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   301
        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
   302
                                                     class_type=Zpool,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   303
                                                     not_found_is_err=True)[0]
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   304
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   305
        if swap_type == TargetController.SWAP_DUMP_ZVOL:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   306
            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
   307
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   308
            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
   309
                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
   310
                use="swap")
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   311
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   312
        if dump_type == TargetController.SWAP_DUMP_ZVOL:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   313
            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
   314
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   315
            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
   316
                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
   317
                use="dump", create_failure_ok=True)
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   318
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   319
        # 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
   320
        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
   321
            class_type=Filesystem)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   322
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   323
        if export_fs is None:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   324
            desired_zpool.add_filesystem(EXPORT_FS_NAME,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   325
                mountpoint=EXPORT_FS_MOUNTPOINT)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   326
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   327
        export_home_fs = desired_zpool.get_first_child(
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   328
            name=EXPORT_HOME_FS_NAME, class_type=Filesystem)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   329
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   330
        if export_home_fs is None:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   331
            desired_zpool.add_filesystem(EXPORT_HOME_FS_NAME)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   332
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   333
        # ERROR #4 - Target class final validation
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   334
        LOGGER.info("Performing Target.final_validation().")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   335
        errsvc.clear_error_list()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   336
        if not desired_root.final_validation():
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   337
            # 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
   338
            error_is_fatal = False
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   339
            all_errors = errsvc.get_all_errors()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   340
            for err in all_errors:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   341
                if isinstance(
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   342
                    err.error_data[liberrsvc.ES_DATA_EXCEPTION],
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   343
                    ShadowPhysical.SliceInUseError):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   344
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   345
                    LOGGER.warn("ShadowPhysical.SliceInUseError - not fatal")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   346
                    LOGGER.warn("Error: mod id %s, type %s",
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   347
                        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
   348
                    LOGGER.warn("Error value: %s",
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   349
                        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
   350
                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
   351
                    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
   352
                    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
   353
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   354
                    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
   355
                                "- 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
   356
                    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
   357
                        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
   358
                    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
   359
                        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
   360
                else:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   361
                    error_is_fatal = True
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   362
                    LOGGER.error("Fatal validation error:")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   363
                    LOGGER.error("Error mod id %s, type: %s" % \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   364
                        (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
   365
                    LOGGER.error("Error class: %r" % \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   366
                        err.error_data[liberrsvc.ES_DATA_EXCEPTION])
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   367
                    LOGGER.error("Error value: %s" % \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   368
                        err.error_data[liberrsvc.ES_DATA_EXCEPTION].value)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   369
                    LOGGER.error("Desired Targets in DOC:\n%s" % \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   370
                        desired_root.get_xml_tree_str())
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   371
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   372
            if error_is_fatal:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   373
                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
   374
                    (_("See log file for details."), DEFAULT_LOG_LOCATION))
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   375
                self._raise_error("final_validation failed")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   376
        LOGGER.info("final_validation passed.")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   377
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   378
        # 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
   379
        if selected_disk.whole_disk:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   380
            if selected_disk.disk_prop is None or \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   381
                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
   382
                selected_disk.disk_prop.dev_size < \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   383
                self._target_controller.recommended_target_size:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   384
1716
0cea9255024f 7097153 Advice seems oddly small for solaris partition
Geoffrey Hart <geoffrey.hart@oracle.com>
parents: 1644
diff changeset
   385
                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
   386
                LOGGER.info("Recommended minimum size is %s",
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   387
                    self._target_controller.recommended_target_size)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   388
                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
   389
                    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
   390
                    LOGGER.info("Disk size is (%s)",
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   391
                        selected_disk.disk_prop.dev_size)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   392
                else:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   393
                    LOGGER.info("No size info available")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   394
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   395
                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
   396
                    "smaller than the recommended minimum size."),
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   397
                    _("You may have difficulties upgrading the system "
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   398
                    "software and/or installing and running additional "
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   399
                    "applications."),
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   400
                    two_buttons=True)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   401
                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
   402
                    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
   403
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   404
        # 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
   405
        # 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
   406
        # (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
   407
        else:
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   408
            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
   409
                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
   410
            else:
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
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   412
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   413
            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
   414
                self._target_controller.recommended_target_size:
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   415
1716
0cea9255024f 7097153 Advice seems oddly small for solaris partition
Geoffrey Hart <geoffrey.hart@oracle.com>
parents: 1644
diff changeset
   416
                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
   417
                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
   418
                    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
   419
                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
   420
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   421
                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
   422
                    "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
   423
                    _("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
   424
                    "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
   425
                    "applications."),
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   426
                    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
   427
                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
   428
                    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
   429
                    "minimum")
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   430
1298
268fd28dea26 7068118 system after gui-install seems to lack swap entry in vfstab
Dermot <Dermot.McCluskey@Oracle.COM>
parents: 1229
diff changeset
   431
        # 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
   432
        # 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
   433
        profile = doc.volatile.get_first_child(
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   434
            name="GUI Install",
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   435
            class_type=InstallProfile)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   436
        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
   437
            profile.set_disk_data(self._target_controller)
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   438
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   439
        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
   440
            desired_root.get_xml_tree_str())
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   441
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   442
    #--------------------------------------------------------------------------
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   443
    # Signal handler methods
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
    def diskbutton_toggled(self, toggle_button, disk):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   446
        ''' Signal handler for "toggled" signal in _diskselectionhscrollbar.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   447
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   448
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   449
        if not toggle_button.get_active():
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   450
            # 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
   451
            return
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   452
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   453
        if self._target_controller is not None:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   454
            try:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   455
                selected_disks = self._target_controller.select_disk(
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   456
                    disk, use_whole_disk=self._wholediskmode)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   457
            except SubSizeDiskError as err:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   458
                self._diskwarningimage.hide()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   459
                self._diskerrorimage.show()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   460
                markup = '<span font_desc="Bold">%s</span>' \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   461
                    % _("This disk is too small")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   462
                self._diskstatuslabel.set_markup(markup)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   463
                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
   464
                    "installation" % disk.ctd)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   465
                # Prevent user from proceeding or customisation
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   466
                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
   467
                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
   468
                # 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
   469
                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
   470
                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
   471
                return
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   472
            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
   473
                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
   474
                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
   475
                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
   476
                    % _("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
   477
                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
   478
                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
   479
                    "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
   480
                # 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
   481
                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
   482
                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
   483
                # 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
   484
                self._disk_panel.hide()
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   485
                self._wholediskradio.set_active(True)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   486
                return
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   487
            except BadDiskError, err:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   488
                LOGGER.error("ERROR: TargetController cannot " \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   489
                    "select disk [%s]" % disk.ctd)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   490
                modal_dialog(_("Internal Error"), "%s\n\n%s" % \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   491
                    (_("See log file for details."), DEFAULT_LOG_LOCATION))
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   492
                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
   493
                return
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   494
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   495
            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
   496
            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
   497
            self._diskwarningimage.hide()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   498
            self._diskerrorimage.hide()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   499
            self._diskstatuslabel.set_markup('')
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   500
            self._partitioningvbox.set_sensitive(True)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   501
            self._display_selected_disk_details()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   502
            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
   503
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   504
    def installationdisk_wholediskradio_toggled(self, widget,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   505
        user_data=None):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   506
        ''' Signal handler for "toggled" event in _wholediskradio.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   507
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   508
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   509
        if not widget.get_active():
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   510
            # 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
   511
            return
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   512
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   513
        self._wholediskmode = True
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   514
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   515
        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
   516
        # 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
   517
        try:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   518
            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
   519
                selected_disk,
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   520
                use_whole_disk=self._wholediskmode)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   521
        except BadDiskError, err:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   522
            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
   523
                "select disk [%s]" % selected_disk.ctd)
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   524
            modal_dialog(_("Internal Error"), "%s\n\n%s" % \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   525
                (_("See log file for details."), DEFAULT_LOG_LOCATION))
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   526
            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
   527
            return
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   528
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   529
        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
   530
        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
   531
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   532
        self._display_selected_disk_details()
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
    def installationdisk_partitiondiskradio_toggled(self, widget,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   535
        user_data=None):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   536
        ''' Signal handler for "toggled" event in _partitiondiskradio.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   537
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   538
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   539
        if not widget.get_active():
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   540
            # 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
   541
            return
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   542
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   543
        self._wholediskmode = False
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   544
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   545
        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
   546
        # 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
   547
        try:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   548
            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
   549
                selected_disk,
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   550
                use_whole_disk=self._wholediskmode)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   551
        except BadDiskError, err:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   552
            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
   553
                "select disk [%s]" % selected_disk.ctd)
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   554
            modal_dialog(_("Internal Error"), "%s\n\n%s" % \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   555
                (_("See log file for details."), DEFAULT_LOG_LOCATION))
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   556
            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
   557
            return
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   558
1623
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
   559
        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
   560
        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
   561
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   562
        self._display_selected_disk_details()
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
    def viewport_adjustment_changed(self, adjustment, scrollbar):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   565
        ''' Signal handler for "changed" event in _diskselectionhscrollbar.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   566
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   567
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   568
        lower = adjustment.get_lower()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   569
        upper = adjustment.get_upper()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   570
        pagesize = adjustment.get_page_size()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   571
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   572
        if (upper - lower) <= pagesize:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   573
            scrollbar.hide()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   574
        else:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   575
            scrollbar.show()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   576
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   577
    #--------------------------------------------------------------------------
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   578
    # Private methods
1204
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
    def _process_td_results(self):
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
            If TD completed successfully, the attributes
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   583
            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
   584
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   585
            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
   586
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   587
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   588
        self._td_disks = list()
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   589
        self._target_controller = None
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   590
        self._selected_disk = None
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   591
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   592
        # 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
   593
        engine = InstallEngine.get_instance()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   594
        doc = engine.data_object_cache
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   595
        discovered_root = None
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   596
        try:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   597
            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
   598
                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
   599
                not_found_is_err=True)[0]
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   600
        except ObjectNotFoundError, err:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   601
            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
   602
                str(err))
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   603
            return
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   604
        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
   605
        try:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   606
            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
   607
                not_found_is_err=True)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   608
        except ObjectNotFoundError, err:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   609
            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
   610
                str(err))
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   611
            LOGGER.error("TD XML:\n%s" % \
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   612
                discovered_root.get_xml_tree_str())
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   613
            return
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   614
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   615
        # 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
   616
        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
   617
                                               class_type=InstallProfile)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   618
        if profile is None:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   619
            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
   620
                "InstallProfile from DataObjectCache")
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   621
        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
   622
        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
   623
        matching_disks = list()
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   624
        for disk in self._td_disks:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   625
            if profile.show_iscsi and \
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   626
                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
   627
                disk.disk_prop.dev_type == "iSCSI":
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   628
                matching_disks.append(disk)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   629
                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
   630
                continue
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   631
            if profile.show_local and \
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   632
                (disk.disk_prop is None or \
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   633
                disk.disk_prop.dev_type != "iSCSI"):
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   634
                matching_disks.append(disk)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   635
                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
   636
                continue
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   637
            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
   638
        self._td_disks = matching_disks
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   639
        if not self._td_disks:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   640
            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
   641
            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
   642
            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
   643
            return
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   644
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   645
        # Set up the TargetController
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   646
        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
   647
        self._target_controller = TargetController(doc)
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   648
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   649
        # 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
   650
        # as per its rules.
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   651
        try:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   652
            # 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
   653
            # selects a disk not in whole_disk mode
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   654
            selected_disks = self._target_controller.initialize()
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   655
        except BadDiskError, err:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   656
            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
   657
                "initial disk: [%s]", err)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   658
            return
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   659
        self._selected_disk = selected_disks[0]
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   660
        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
   661
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   662
        # 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
   663
        # 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
   664
        # suitable disk
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   665
        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
   666
            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
   667
                # 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
   668
                break
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   669
        else:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   670
            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
   671
                         "criteria, so picking a new one")
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   672
            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
   673
                try:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   674
                    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
   675
                        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
   676
                except SubSizeDiskError as err:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   677
                    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
   678
                                 td_disk, err)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   679
                    continue
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   680
                except BadDiskError, err:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   681
                    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
   682
                                 td_disk, err)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   683
                    continue
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   684
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   685
                self._selected_disk = selected_disks[0]
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   686
                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
   687
                break
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   688
            else:
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   689
                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
   690
                self._selected_disk = None
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   691
                return
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   692
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   693
        LOGGER.info("TD AND TC FINISHED SUCCESSFULLY!")
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   694
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   695
    def _set_screen_titles(self):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   696
        # 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
   697
        # 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
   698
        # options are different
1716
0cea9255024f 7097153 Advice seems oddly small for solaris partition
Geoffrey Hart <geoffrey.hart@oracle.com>
parents: 1644
diff changeset
   699
        size_str = _("Recommended minimum: %lldGB Minimum: %.1fGB")
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   700
        size_str = size_str.replace('%lld', '%s')
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   701
        size_str = size_str.replace('%.1f', '%s')
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   702
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   703
        if self._target_controller is None:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   704
            # 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
   705
            size_str = size_str.replace('%s', '')
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   706
        else:
1752
5c51d42f1aaf 7163694 Interactive installer's display of min/rec install device size display should be rounded up
swati sarraf <swati.sarraf@oracle.com>
parents: 1716
diff changeset
   707
            rec_orig = \
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   708
                self._target_controller.recommended_target_size.get(
1752
5c51d42f1aaf 7163694 Interactive installer's display of min/rec install device size display should be rounded up
swati sarraf <swati.sarraf@oracle.com>
parents: 1716
diff changeset
   709
                    units=Size.gb_units)
5c51d42f1aaf 7163694 Interactive installer's display of min/rec install device size display should be rounded up
swati sarraf <swati.sarraf@oracle.com>
parents: 1716
diff changeset
   710
            rec_roundup = (ceil(rec_orig * 10)) * 0.1 
5c51d42f1aaf 7163694 Interactive installer's display of min/rec install device size display should be rounded up
swati sarraf <swati.sarraf@oracle.com>
parents: 1716
diff changeset
   711
            rec_size = locale.format('%.1f', rec_roundup)
5c51d42f1aaf 7163694 Interactive installer's display of min/rec install device size display should be rounded up
swati sarraf <swati.sarraf@oracle.com>
parents: 1716
diff changeset
   712
            min_orig = \
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   713
                self._target_controller.minimum_target_size.get(
1752
5c51d42f1aaf 7163694 Interactive installer's display of min/rec install device size display should be rounded up
swati sarraf <swati.sarraf@oracle.com>
parents: 1716
diff changeset
   714
                    units=Size.gb_units)
5c51d42f1aaf 7163694 Interactive installer's display of min/rec install device size display should be rounded up
swati sarraf <swati.sarraf@oracle.com>
parents: 1716
diff changeset
   715
            min_roundup = (ceil(min_orig * 10)) * 0.1 
5c51d42f1aaf 7163694 Interactive installer's display of min/rec install device size display should be rounded up
swati sarraf <swati.sarraf@oracle.com>
parents: 1716
diff changeset
   716
            min_size = locale.format('%.1f', min_roundup)
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   717
            size_str = size_str % (rec_size, min_size)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   718
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   719
        self.set_titles(_("Disk Selection"),
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   720
            _("Where should Oracle Solaris be installed?"),
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   721
            size_str)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   722
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   723
    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
   724
        self._diskstatuslabel.set_markup('')
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   725
        self._set_screen_titles()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   726
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   727
        # 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
   728
        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
   729
            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
   730
                self._create_finding_disks_vbox()
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   731
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   732
        empty_container(self._disksviewport)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   733
        self._disksviewport.add(self._finding_disks_vbox)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   734
        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
   735
        self._disksviewport.show_all()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   736
        self._toplevel.show()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   737
1439
7375801f1f12 7085402 gui-install introduces localiziable string with non-swappable parameters
Dermot <Dermot.McCluskey@Oracle.COM>
parents: 1401
diff changeset
   738
        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
   739
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   740
        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
   741
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   742
    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
   743
        if not get_td_results_state():
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   744
            self._process_td_results()
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   745
            set_td_results_state(True)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   746
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   747
        self._diskstatuslabel.set_markup('')
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   748
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   749
        # 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
   750
        # 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
   751
        # 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
   752
        error_occurred = False
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   753
        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
   754
            error_occurred = True
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   755
            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
   756
                _("No suitable disks were found.")
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   757
            self._diskstatuslabel.set_markup(markup)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   758
            self._diskerrorimage.show()
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   759
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   760
        self._set_screen_titles()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   761
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   762
        # 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
   763
        # TD can find different disks
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   764
        self._disk_buttons_hbuttonbox = \
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   765
            self._create_disk_buttons_hbuttonbox()
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   766
        self._create_disk_buttons()
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   767
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   768
        empty_container(self._disksviewport)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   769
        self._disksviewport.add(self._disk_buttons_hbuttonbox)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   770
        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
   771
        self._disksviewport.show_all()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   772
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   773
        # Hook up the scrollbar to the viewport
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   774
        viewportadjustment = self._diskselectionhscrollbar.get_adjustment()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   775
        gobject.GObject.connect(viewportadjustment,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   776
            "changed",
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   777
            self.viewport_adjustment_changed,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   778
            self._diskselectionhscrollbar)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   779
        self._disksviewport.set_hadjustment(viewportadjustment)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   780
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   781
        if not error_occurred:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   782
            # 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
   783
            # 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
   784
            active_button = None
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   785
            for button in self._disk_buttons:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   786
                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
   787
                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
   788
                    button.set_active(True)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   789
                    active_button = button
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   790
                    break
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   791
            else:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   792
                # _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
   793
                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
   794
                                   " match any disk icon")
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   795
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   796
            # 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
   797
            if self._wholediskmode:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   798
                self._wholediskradio.set_active(True)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   799
            else:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   800
                self._partitiondiskradio.set_active(True)
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   801
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   802
            # 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
   803
            self._diskradioalignment.show_all()
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   804
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   805
            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
   806
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   807
            if active_button:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   808
                active_button.grab_focus()
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   809
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   810
            self._partitioningvbox.show()
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   811
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   812
        self._toplevel.show()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   813
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   814
        if error_occurred:
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   815
            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
   816
        else:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   817
            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
   818
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   819
    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
   820
        '''
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   821
            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
   822
            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
   823
        '''
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   824
        if is_discovery_complete():
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   825
            if (self._toplevel is not None) and \
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   826
                (self._toplevel.flags() & gtk.MAPPED):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   827
                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
   828
            self._monitor_timeout_id = None
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   829
            return False
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   830
        else:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   831
            return True
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   832
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   833
    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
   834
        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
   835
        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
   836
        if selected_disks:
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   837
            if self._wholediskmode:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   838
                # Show "Entire disk will be erased" warning
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   839
                self._diskwarninghbox.show()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   840
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
                # 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
   842
                self._disk_panel.hide()
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   843
            else:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   844
                # Hide "Entire disk will be erased" warning
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   845
                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
   846
                self._disk_panel.display(selected_disks[0],
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   847
                    self._target_controller)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   848
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   849
    def _create_finding_disks_vbox(self):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   850
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   851
            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
   852
            version of the screen.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   853
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   854
            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
   855
            of the app.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   856
        '''
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
        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
   859
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   860
        label = gtk.Label()
1439
7375801f1f12 7085402 gui-install introduces localiziable string with non-swappable parameters
Dermot <Dermot.McCluskey@Oracle.COM>
parents: 1401
diff changeset
   861
        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
   862
        label.set_markup(markup_str)
1204
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
        busyimage = gtk.image_new_from_file(IMAGE_DIR + "/"
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   865
            "gnome-spinner.gif")
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
        finding_disks_vbox.pack_start(label, expand=False,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   868
            fill=False, padding=0)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   869
        finding_disks_vbox.pack_end(busyimage, expand=False,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   870
            fill=False, padding=0)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   871
1401
d146dce1de3d 7080703 [A11Y] several accessibility regressions within the new GUI Installer
John Fischer <john.fischer@oracle.com>
parents: 1370
diff changeset
   872
        return finding_disks_vbox, label
1204
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
    def _create_disk_button_icon(self, disk):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   875
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   876
           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
   877
        '''
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   878
        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
   879
            # use our own iSCSI disk icon
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   880
            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
   881
                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
   882
            disk_width = disk_pixbuf.get_width()
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   883
            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
   884
        else:
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   885
            # use our own generic disk icon
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   886
            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
   887
                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
   888
            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
   889
            disk_height = disk_pixbuf.get_height()
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   890
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   891
        emblem_iconinfo = None
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   892
        # 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
   893
        # Too small or incompatible block_size
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   894
        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
   895
            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
   896
            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
   897
            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
   898
                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
   899
        # 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
   900
        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
   901
            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
   902
                16, 0)
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   903
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   904
        if emblem_iconinfo is not None:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   905
            emblem_filename = emblem_iconinfo.get_filename()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   906
            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
   907
            emblem_width = emblem_pixbuf.get_width()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   908
            emblem_height = emblem_pixbuf.get_height()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   909
            emblem_pixbuf.composite(disk_pixbuf,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   910
                disk_width - emblem_width,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   911
                disk_height - emblem_height,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   912
                emblem_width,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   913
                emblem_height,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   914
                disk_width - emblem_width,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   915
                disk_height - emblem_height,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   916
                1,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   917
                1,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   918
                gtk.gdk.INTERP_BILINEAR,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   919
                192)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   920
        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
   921
        disk_image.show()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   922
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   923
        return disk_image
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   924
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   925
    def _set_disk_button_icon(self, button, image):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   926
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   927
            Sets the icon for button to image
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   928
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   929
        vbox = button.get_data("iconvbox")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   930
        oldimage = button.get_data("icon")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   931
        if oldimage is not None:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   932
            oldimage.destroy()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   933
        vbox.pack_start(image, True, True, 0)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   934
        button.set_data("icon", 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
    def _create_disk_buttons(self):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   937
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   938
            Creates the graphical disk selection radio button widgets
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   939
        '''
1644
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   940
        self._disk_buttons = list()
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   941
        first_button = None
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   942
        for td_disk in self._td_disks:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   943
            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
   944
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   945
            # 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
   946
            # 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
   947
            # the Iscsi obj in DOC
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   948
            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
   949
                doc = InstallEngine.get_instance().doc
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   950
                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
   951
                                                     class_type=Iscsi)
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   952
                if iscsi:
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   953
                    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
   954
                        summary += "\n" + \
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   955
                            _("iSCSI LUN : %s") % \
e827d1934114 PSARC/2012/023 Interactive Installation to iSCSI
Drew Fisher <drew.fisher@oracle.com>
parents: 1623
diff changeset
   956
                                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
   957
1204
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   958
            label = gtk.Label(name)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   959
            if first_button is None:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   960
                button = gtk.RadioButton()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   961
                first_button = button
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   962
            else:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   963
                # Add subsequent buttons to the same RadioButton group
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   964
                # as the first one
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   965
                button = gtk.RadioButton(group=first_button)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   966
            button.set_mode(False)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   967
            button.set_relief(gtk.RELIEF_NONE)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   968
            button.set_tooltip_text(summary)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   969
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   970
            # 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
   971
            gobject.GObject.set_data(button, "Disk", td_disk)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   972
            # 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
   973
            self._disk_buttons.append(button)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   974
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   975
            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
   976
            button.add(align)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   977
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   978
            vbox = gtk.VBox(homogeneous=False, spacing=0)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   979
            align.add(vbox)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   980
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   981
            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
   982
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   983
            button.set_data("iconvbox", vbox)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   984
            self._set_disk_button_icon(button,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   985
                self._create_disk_button_icon(td_disk))
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   986
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   987
            self._disk_buttons_hbuttonbox.pack_start(button,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   988
                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.connect("toggled",
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   991
                self.diskbutton_toggled,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   992
                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
        # Update disk button icons if icon theme changes
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   995
        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
   996
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   997
    def _create_disk_buttons_hbuttonbox(self):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   998
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
   999
            Creates the horizontal container widget for disk buttons.
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
            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
  1002
            of the app.
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
        disk_buttons_hbuttonbox = gtk.HButtonBox()
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1005
        disk_buttons_hbuttonbox.set_spacing(36)
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1006
        disk_buttons_hbuttonbox.set_layout(gtk.BUTTONBOX_START)
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
        return disk_buttons_hbuttonbox
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1009
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1010
    def _icon_theme_changed(self, theme):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1011
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1012
            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
  1013
            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
  1014
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1015
        for button in self._disk_buttons:
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1016
            disk = button.get_data("Disk")
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1017
            self._set_disk_button_icon(button,
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1018
                self._create_disk_button_icon(disk))
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1019
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1020
    def _raise_error(self, msg):
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1021
        ''' Raise the NotOkToProceed exception.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1022
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1023
            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
  1024
            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
  1025
            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
  1026
            editing them, once the dialog has been dismissed.
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1027
        '''
5c7590b24780 7050438 Update GUI Install to use CUD
Dermot <Dermot.McCluskey@Oracle.COM>
parents:
diff changeset
  1028
        self._display_selected_disk_details()
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
        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
  1031
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1032
    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
  1033
        ''' 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
  1034
            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
  1035
        '''
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1036
        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
  1037
        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
  1038
            return
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1039
cb56a2fb4925 PSARC 2012/074 UEFI/GRUB2/Large Disk Boot (UGLDB) (Install phase II):
Niall Power <niall.power@oracle.com>
parents: 1532
diff changeset
  1040
        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
  1041
        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
  1042
            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
  1043
            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
  1044
            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
  1045
            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
  1046
            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
  1047
                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
  1048
        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
  1049
            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
  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._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
  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)