usr/src/cmd/system-config/__init__.py
author Ginnie Wray<virginia.wray@oracle.com>
Tue, 19 Jun 2012 12:18:37 -0600
changeset 1717 10cb4d15a248
parent 1672 6e0bd17ca3f5
child 1731 ddf2ef5c94ee
permissions -rw-r--r--
7066254 Problem with install/logging 7170155 DC leaves log files in /var/tmp/install
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
     1
#!/usr/bin/python2.6
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
     2
#
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
     3
# CDDL HEADER START
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
     4
#
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
     5
# The contents of this file are subject to the terms of the
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
     6
# Common Development and Distribution License (the "License").
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
     7
# You may not use this file except in compliance with the License.
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
     8
#
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
     9
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    10
# or http://www.opensolaris.org/os/licensing.
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    11
# See the License for the specific language governing permissions
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    12
# and limitations under the License.
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    13
#
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    14
# When distributing Covered Code, include this CDDL HEADER in each
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    15
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    16
# If applicable, add the following below this CDDL HEADER, with the
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    17
# fields enclosed by brackets "[]" replaced with your own identifying
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    18
# information: Portions Copyright [yyyy] [name of copyright owner]
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    19
#
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    20
# CDDL HEADER END
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    21
#
1579
ccbee8781705 7118945 installer unnecessarily sets NIS property config.use_broadcast
Jan Damborsky <dambi@opensolaris.org>
parents: 1529
diff changeset
    22
# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    23
#
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    24
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    25
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    26
'''System Configuration Interactive (SCI) Tool'''
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    27
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    28
import gettext
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    29
import atexit
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    30
import curses
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    31
import locale
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    32
import logging
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    33
from optparse import OptionParser
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    34
import os
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
    35
import shutil
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    36
import signal
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    37
import sys
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    38
1160
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1155
diff changeset
    39
from solaris_install import engine
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    40
from solaris_install.data_object import DataObject
1160
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1155
diff changeset
    41
from solaris_install.data_object.data_dict import DataObjectDict
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
    42
from solaris_install import Popen, CalledProcessError
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    43
from solaris_install.engine import InstallEngine, RollbackError
1160
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1155
diff changeset
    44
from solaris_install.ict.apply_sysconfig import APPLY_SYSCONFIG_DICT, \
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1155
diff changeset
    45
    APPLY_SYSCONFIG_PROFILE_KEY
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    46
1631
f8841ae44dc6 7117291 Deliver translatable content in a separate IPS package
Takeshi Asano <takeshi.asano@oracle.com>
parents: 1620
diff changeset
    47
_ = gettext.translation("solaris_install_systemconfig", "/usr/share/locale",
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    48
                        fallback=True).ugettext
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    49
SCI_HELP = "/usr/share/sysconfig/help"
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
    50
COMMA = ","
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
    51
DASH_G = "-g"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
    52
SUPPORT_ERR = "system is the only supported grouping for configure " \
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
    53
                "and unconfigure"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
    54
SUBCOMMANDS = "unconfigure, configure, create-profile"
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    55
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    56
# system configuration groups
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    57
# hostname
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    58
SC_GROUP_IDENTITY = 'identity'
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    59
# networking
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    60
SC_GROUP_NETWORK = "network"
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    61
# naming services
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    62
SC_GROUP_NS = 'naming_services'
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    63
# keyboard layout
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    64
SC_GROUP_KBD = 'kbd_layout'
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    65
# date and time
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    66
SC_GROUP_DATETIME = 'date_time'
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    67
# timezone and locale
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    68
SC_GROUP_LOCATION = 'location'
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    69
# user and root account
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    70
SC_GROUP_USERS = 'users'
1620
f7367223f0c2 PSARC/2012/043 Solaris OCM Phase 2 (Installer integration)
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1598
diff changeset
    71
# Phone-home support technologies
f7367223f0c2 PSARC/2012/043 Solaris OCM Phase 2 (Installer integration)
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1598
diff changeset
    72
SC_GROUP_SUPPORT = 'support'
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    73
# pseudo-group - includes all available groups
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    74
SC_GROUP_SYSTEM = 'system'
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    75
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    76
# list of configuration groups
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    77
SC_ALL_GROUPS = [SC_GROUP_IDENTITY, SC_GROUP_NETWORK, SC_GROUP_NS,
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    78
                 SC_GROUP_KBD, SC_GROUP_LOCATION, SC_GROUP_DATETIME,
1620
f7367223f0c2 PSARC/2012/043 Solaris OCM Phase 2 (Installer integration)
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1598
diff changeset
    79
                 SC_GROUP_USERS, SC_GROUP_SUPPORT]
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    80
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    81
# all valid configuration groups including 'system' pseudo-group
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    82
SC_VALID_GROUPS = SC_ALL_GROUPS + [SC_GROUP_SYSTEM]
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    83
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
    84
SMF_REPOSITORY = "etc/svc/repository.db"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
    85
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
    86
CUSTOM_PROFILE_DIR = "etc/svc/profile/sc"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
    87
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    88
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    89
def get_sc_options_from_doc():
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    90
    '''Obtains list of sysconfig CLI options from Data Object Cache'''
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    91
    doc = InstallEngine.get_instance().doc.persistent
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    92
    sc_options = doc.get_first_child(name=SC_OPTIONS_LABEL)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    93
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    94
    if sc_options is not None:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    95
        return sc_options.options
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    96
    else:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    97
        return None
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    98
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    99
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   100
def configure_group(group=None):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   101
    '''Returns True if specified group is to be configured,
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   102
    otherwise returns False'''
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   103
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   104
    sc_options = get_sc_options_from_doc()
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   105
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   106
    # if list of groups can't be obtained, assume everything
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   107
    # is to be configured
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   108
    if sc_options is None:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   109
        return True
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   110
    elif group in sc_options.grouping:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   111
        return True
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   112
    else:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   113
        return False
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   114
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   115
from solaris_install.logger import FileHandler, INSTALL_LOGGER_NAME
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   116
from solaris_install.sysconfig.date_time import DateTimeScreen
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   117
from solaris_install.sysconfig.network_nic_configure import NICConfigure
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   118
from solaris_install.sysconfig.network_nic_select import NICSelect
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   119
from solaris_install.sysconfig.network_type import NetworkTypeScreen
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   120
from solaris_install.sysconfig.profile import ConfigProfile, SMFConfig, \
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   121
                                              SMFInstance, SMFPropertyGroup, \
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   122
                                              SMFProperty
1281
1e322933782d 7054440 Allow combination of name services to be configured in S11 text installer: DNS+NIS, DNS+LDAP
William Schumann <william.schumann@sun.com>
parents: 1279
diff changeset
   123
from solaris_install.sysconfig.nameservice import NSDNSChooser, NSAltChooser, \
1e322933782d 7054440 Allow combination of name services to be configured in S11 text installer: DNS+NIS, DNS+LDAP
William Schumann <william.schumann@sun.com>
parents: 1279
diff changeset
   124
                                                  NSDomain, \
1164
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   125
                                                  NSDNSServer, NSDNSSearch, \
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   126
                                                  NSLDAPProfile, \
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   127
                                                  NSLDAPProxyBindChooser, \
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   128
                                                  NSLDAPProxyBindInfo, \
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   129
                                                  NSNISAuto, NSNISIP
1620
f7367223f0c2 PSARC/2012/043 Solaris OCM Phase 2 (Installer integration)
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1598
diff changeset
   130
from solaris_install.sysconfig.support import SupportMOSScreen, \
f7367223f0c2 PSARC/2012/043 Solaris OCM Phase 2 (Installer integration)
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1598
diff changeset
   131
                                              SupportNetConfigScreen, \
f7367223f0c2 PSARC/2012/043 Solaris OCM Phase 2 (Installer integration)
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1598
diff changeset
   132
                                              SupportProxyScreen, \
f7367223f0c2 PSARC/2012/043 Solaris OCM Phase 2 (Installer integration)
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1598
diff changeset
   133
                                              SupportHubScreen
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   134
from solaris_install.sysconfig.summary import SummaryScreen
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   135
from solaris_install.sysconfig.timezone import TimeZone
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   136
from solaris_install.sysconfig.users import UserScreen
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   137
from solaris_install.sysconfig.welcome import WelcomeScreen
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   138
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   139
import terminalui
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   140
from terminalui import LOG_LEVEL_INPUT, LOG_NAME_INPUT
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   141
from terminalui.action import Action
1529
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   142
from terminalui.base_screen import BaseScreen, QuitException
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   143
from terminalui.help_screen import HelpScreen
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   144
from terminalui.i18n import get_encoding, set_wrap_on_whitespace
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   145
from terminalui.main_window import MainWindow
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   146
from terminalui.screen_list import ScreenList
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   147
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   148
SU_OK = 0
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   149
SU_FATAL_ERR = 1
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   150
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   151
# profile names
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   152
# profile configuring svc:/milestone/config:default service
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   153
CONFIG_PROFILE = "enable_sci.xml"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   154
# profile configuring svc:/milestone/unconfig milestone
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   155
UNCONFIG_PROFILE = "unconfig.xml"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   156
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   157
# directories
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   158
# temporary directory
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   159
VOLATILE_PATH = "/system/volatile"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   160
# smf site-profile directory
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   161
PROFILE_PATH = "/etc/svc/profile/site"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   162
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   163
# temporary profiles
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   164
TMP_CONFIG_PROFILE = os.path.join(VOLATILE_PATH, CONFIG_PROFILE)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   165
TMP_UNCONFIG_PROFILE = os.path.join(VOLATILE_PATH, UNCONFIG_PROFILE)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   166
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   167
# destination for profile configuring svc:/milestone/config:default service
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   168
CONFIG_PROFILE_DEST = os.path.join(PROFILE_PATH, CONFIG_PROFILE)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   169
# destination for profile configuring svc:/milestone/unconfig milestone
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   170
UNCONFIG_PROFILE_DEST = os.path.join(PROFILE_PATH, UNCONFIG_PROFILE)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   171
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   172
# default locations
1385
0f74e9631185 7079223 Default name of profile created by 'sysconfig create-profile' not consistent
William Schumann <william.schumann@sun.com>
parents: 1339
diff changeset
   173
DEFAULT_SC_PROFILE = "sc_profile.xml"
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   174
DEFAULT_SC_LOCATION = os.path.join(VOLATILE_PATH, "profile",
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   175
                                   DEFAULT_SC_PROFILE)
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   176
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1672
diff changeset
   177
DEFAULT_LOG_LOC = os.path.join(VOLATILE_PATH, "sysconfig/sysconfig.log")
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   178
DEFAULT_LOG_LEVEL = "info"
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   179
LOG_FORMAT = ("%(asctime)s - %(levelname)-8s: "
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   180
              "%(filename)s:%(lineno)d %(message)s")
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   181
LOGGER = None
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   182
XSLT_FILE = os.environ.get('SC_XSLT',
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   183
                           '/usr/share/sysconfig/xslt/doc2sc_profile.xslt')
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   184
SC_FILE = DEFAULT_SC_LOCATION
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   185
GENERATE_SC_PROFILE_CHKPOINT = 'generate-sc-profile'
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   186
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   187
# sysconfig subcommands
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   188
CONFIGURE = "configure"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   189
UNCONFIGURE = "unconfigure"
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   190
CREATE_PROFILE = "create-profile"
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   191
SVCADM = "/usr/sbin/svcadm"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   192
SVCPROP = "/usr/bin/svcprop"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   193
SVCCFG = "/usr/sbin/svccfg"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   194
SYSTEM = "system"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   195
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   196
# Commands for the console
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   197
CTSTAT = "/usr/bin/ctstat"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   198
SVCPROP = "/usr/bin/svcprop"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   199
CONSOLE_LOGIN = "svc:/system/console-login:default"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   200
TTY = "/usr/bin/tty"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   201
CONSOLE = "/dev/console"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   202
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   203
ALT_ROOT_ENV_VAR = "_UNCONFIG_ALT_ROOT"
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   204
1425
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   205
# DOC label for SysConfig options
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   206
SC_OPTIONS_LABEL = "sc_options"
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   207
1081
209bcdf4a456 7037236 After doing a net TI install, scitools is still invoked and ask about configuration
William Schumann <william.schumann@sun.com>
parents: 1026
diff changeset
   208
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   209
class SysConfigOptions(DataObject):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   210
    '''System Configuration options'''
1425
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   211
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   212
    def __init__(self, options=None):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   213
        super(SysConfigOptions, self).__init__(SC_OPTIONS_LABEL)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   214
        self.options = options
1425
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   215
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   216
    def to_xml(self):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   217
        return None
1425
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   218
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   219
    @classmethod
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   220
    def can_handle(cls, element):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   221
        return False
1425
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   222
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   223
    @classmethod
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   224
    def from_xml(cls, element):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   225
        return None
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   226
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   227
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   228
# Public functions for consumers of sysconfig
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   229
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   230
def get_all_screens(main_win):
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   231
    '''Initializes a full set of configuration screens'''
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   232
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   233
    result = []
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   234
    result.append(NetworkTypeScreen(main_win, True))
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   235
    result.append(NICSelect(main_win))
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   236
    result.append(NICConfigure(main_win))
1164
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   237
    _append_nameservice_screens(result, main_win)
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   238
    result.append(TimeZone(main_win, screen=TimeZone.REGIONS))
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   239
    result.append(TimeZone(main_win, screen=TimeZone.LOCATIONS))
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   240
    result.append(TimeZone(main_win))
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   241
    result.append(DateTimeScreen(main_win))
1598
d109a52c861f 7140893 Hide user account configuration in SCI tool if parent of home ZFS dataset is missing
Jan Damborsky <dambi@opensolaris.org>
parents: 1579
diff changeset
   242
d109a52c861f 7140893 Hide user account configuration in SCI tool if parent of home ZFS dataset is missing
Jan Damborsky <dambi@opensolaris.org>
parents: 1579
diff changeset
   243
    # All screens are to be brought up, so make sure complete user screen
d109a52c861f 7140893 Hide user account configuration in SCI tool if parent of home ZFS dataset is missing
Jan Damborsky <dambi@opensolaris.org>
parents: 1579
diff changeset
   244
    # (root password as well as initial user account) is displayed.
d109a52c861f 7140893 Hide user account configuration in SCI tool if parent of home ZFS dataset is missing
Jan Damborsky <dambi@opensolaris.org>
parents: 1579
diff changeset
   245
    result.append(UserScreen(main_win, show_user_account=True))
1425
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   246
1620
f7367223f0c2 PSARC/2012/043 Solaris OCM Phase 2 (Installer integration)
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1598
diff changeset
   247
    # Support screens for OCM/ASR
f7367223f0c2 PSARC/2012/043 Solaris OCM Phase 2 (Installer integration)
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1598
diff changeset
   248
    result.append(SupportMOSScreen(main_win))
f7367223f0c2 PSARC/2012/043 Solaris OCM Phase 2 (Installer integration)
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1598
diff changeset
   249
    result.append(SupportNetConfigScreen(main_win))
f7367223f0c2 PSARC/2012/043 Solaris OCM Phase 2 (Installer integration)
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1598
diff changeset
   250
    result.append(SupportProxyScreen(main_win))
f7367223f0c2 PSARC/2012/043 Solaris OCM Phase 2 (Installer integration)
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1598
diff changeset
   251
    result.append(SupportHubScreen(main_win))
f7367223f0c2 PSARC/2012/043 Solaris OCM Phase 2 (Installer integration)
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1598
diff changeset
   252
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   253
    return result
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   254
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   255
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   256
def get_screens_from_groups(main_win):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   257
    '''Initializes subset of configuration screens matching list of specified
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   258
    configuration groups'''
1425
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   259
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   260
    result = []
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   261
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   262
    # hostname
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   263
    if configure_group(SC_GROUP_IDENTITY):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   264
        result.append(NetworkTypeScreen(main_win,
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   265
                                        configure_group(SC_GROUP_NETWORK)))
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   266
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   267
    # network
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   268
    if configure_group(SC_GROUP_NETWORK):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   269
        result.append(NICSelect(main_win))
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   270
        result.append(NICConfigure(main_win))
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   271
1164
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   272
    # name services
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   273
    if configure_group(SC_GROUP_NS):
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   274
        _append_nameservice_screens(result, main_win)
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   275
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   276
    # timezone
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   277
    if configure_group(SC_GROUP_LOCATION):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   278
        result.append(TimeZone(main_win, screen=TimeZone.REGIONS))
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   279
        result.append(TimeZone(main_win, screen=TimeZone.LOCATIONS))
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   280
        result.append(TimeZone(main_win))
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   281
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   282
    # date and time
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   283
    if configure_group(SC_GROUP_DATETIME):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   284
        result.append(DateTimeScreen(main_win))
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   285
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   286
    # initial user
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   287
    if configure_group(SC_GROUP_USERS):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   288
        result.append(UserScreen(main_win))
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   289
1620
f7367223f0c2 PSARC/2012/043 Solaris OCM Phase 2 (Installer integration)
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1598
diff changeset
   290
    # support
f7367223f0c2 PSARC/2012/043 Solaris OCM Phase 2 (Installer integration)
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1598
diff changeset
   291
    if configure_group(SC_GROUP_SUPPORT):
f7367223f0c2 PSARC/2012/043 Solaris OCM Phase 2 (Installer integration)
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1598
diff changeset
   292
        result.append(SupportMOSScreen(main_win))
f7367223f0c2 PSARC/2012/043 Solaris OCM Phase 2 (Installer integration)
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1598
diff changeset
   293
        result.append(SupportNetConfigScreen(main_win))
f7367223f0c2 PSARC/2012/043 Solaris OCM Phase 2 (Installer integration)
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1598
diff changeset
   294
        result.append(SupportProxyScreen(main_win))
f7367223f0c2 PSARC/2012/043 Solaris OCM Phase 2 (Installer integration)
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1598
diff changeset
   295
        result.append(SupportHubScreen(main_win))
f7367223f0c2 PSARC/2012/043 Solaris OCM Phase 2 (Installer integration)
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1598
diff changeset
   296
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   297
    return result
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   298
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   299
1164
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   300
def _append_nameservice_screens(result, main_win):
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   301
    ''' Initialize and append all name service screens '''
1281
1e322933782d 7054440 Allow combination of name services to be configured in S11 text installer: DNS+NIS, DNS+LDAP
William Schumann <william.schumann@sun.com>
parents: 1279
diff changeset
   302
    result.append(NSDNSChooser(main_win))
1422
b4ceead84bf0 7077465 Text installer's multiple name service input screens need to be less confusing
William Schumann <william.schumann@sun.com>
parents: 1385
diff changeset
   303
    result.append(NSDNSServer(main_win))
b4ceead84bf0 7077465 Text installer's multiple name service input screens need to be less confusing
William Schumann <william.schumann@sun.com>
parents: 1385
diff changeset
   304
    result.append(NSDNSSearch(main_win))
1281
1e322933782d 7054440 Allow combination of name services to be configured in S11 text installer: DNS+NIS, DNS+LDAP
William Schumann <william.schumann@sun.com>
parents: 1279
diff changeset
   305
    result.append(NSAltChooser(main_win))
1164
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   306
    result.append(NSDomain(main_win))
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   307
    result.append(NSLDAPProfile(main_win))
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   308
    result.append(NSLDAPProxyBindChooser(main_win))
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   309
    result.append(NSLDAPProxyBindInfo(main_win))
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   310
    result.append(NSNISAuto(main_win))
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   311
    result.append(NSNISIP(main_win))
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   312
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   313
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   314
def register_checkpoint(sc_profile=SC_FILE, xslt=XSLT_FILE):
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   315
    '''Registers the GENERATE_SC_PROFILE_CHKPOINT checkpoint with the engine.
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   316
    Also adds config_profile to InstallEngine.doc.persistent'''
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   317
    eng = InstallEngine.get_instance()
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   318
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   319
    sc_kwargs = {'xslt_file': xslt}
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   320
    sc_args = [sc_profile]
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   321
    eng.register_checkpoint(GENERATE_SC_PROFILE_CHKPOINT,
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   322
                            "solaris_install/manifest/writer",
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   323
                            "ManifestWriter", args=sc_args, kwargs=sc_kwargs)
1160
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1155
diff changeset
   324
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1155
diff changeset
   325
    # Add profile location to the ApplySysconfig checkpoint's data dict.
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1155
diff changeset
   326
    # Try to find the ApplySysconfig data dict from the DOC in case it
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1155
diff changeset
   327
    # already exists.
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1155
diff changeset
   328
    as_doc_dict = None
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1155
diff changeset
   329
    as_doc_dict = eng.doc.volatile.get_first_child(name=APPLY_SYSCONFIG_DICT)
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1155
diff changeset
   330
    if as_doc_dict is None:
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1155
diff changeset
   331
        # Initialize new dictionary in DOC
1194
1c704d419abb 7054032 S11 text installer LDAP configuration does not work
William Schumann <william.schumann@sun.com>
parents: 1164
diff changeset
   332
        as_dict = {APPLY_SYSCONFIG_PROFILE_KEY: sc_profile}
1160
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1155
diff changeset
   333
        as_doc_dict = DataObjectDict(APPLY_SYSCONFIG_DICT, as_dict)
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1155
diff changeset
   334
        eng.doc.volatile.insert_children(as_doc_dict)
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1155
diff changeset
   335
    else:
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1155
diff changeset
   336
        # Add to existing dictionary in DOC
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1155
diff changeset
   337
        as_doc_dict.data_dict[APPLY_SYSCONFIG_PROFILE_KEY] = sc_profile
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1155
diff changeset
   338
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   339
    eng.doc.persistent.insert_children([ConfigProfile()])
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   340
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   341
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   342
def vararg_callback(option, opt_str, value, parser):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   343
    '''Callback function to parse the -g option. Multiple groups are
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   344
    allowed to be specified.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   345
    '''
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   346
    value = list()
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   347
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   348
    def floatable(arg_str):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   349
        '''Checks for a float variable'''
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   350
        try:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   351
            float(arg_str)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   352
            return True
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   353
        except ValueError:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   354
            return False
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   355
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   356
    for arg in parser.rargs:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   357
        if arg[:2] == "--" and len(arg) > 2:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   358
            break
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   359
        if arg[:1] == "-" and len(arg) > 1 and not floatable(arg):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   360
            break
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   361
        # Strip off the comma separating the groups if it's there
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   362
        # and check that the user hasn't specified the same grouping
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   363
        # more than once. If they have, only keep one.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   364
        if arg.strip(",") not in value:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   365
            value.append(arg.strip(","))
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   366
    del parser.rargs[:len(value)]
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   367
    setattr(parser.values, option.dest, value)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   368
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   369
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   370
def create_config_profiles(sub_cmd, options):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   371
    ''' Create two separate SMF profiles configuring milestone/config and
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   372
    milestone/unconfig services. Place them in /etc/svc/profile/site
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   373
    directory.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   374
    '''
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   375
    # Remove any old profile files.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   376
    if os.path.exists(TMP_CONFIG_PROFILE):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   377
        os.unlink(TMP_CONFIG_PROFILE)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   378
    if os.path.exists(TMP_UNCONFIG_PROFILE):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   379
        os.unlink(TMP_UNCONFIG_PROFILE)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   380
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   381
    # create profile configuring milestone/config service
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   382
    fhdl = open(TMP_CONFIG_PROFILE, "w")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   383
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   384
    # Header and DTD
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   385
    fhdl.writelines("<?xml version='1.0'?>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   386
    fhdl.writelines("<!DOCTYPE service_bundle SYSTEM "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   387
                    "'/usr/share/lib/xml/dtd/service_bundle.dtd.1'>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   388
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   389
    fhdl.writelines("<service_bundle type=\"profile\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   390
                    "name=\"config_profile\">\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   391
    fhdl.writelines("<service name=\"milestone/config\" version=\"1\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   392
                    "type=\"service\">\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   393
    fhdl.writelines("<instance name=\"default\" enabled=\"true\">\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   394
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   395
    # sysconfig property group
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   396
    fhdl.writelines("<property_group name=\"sysconfig\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   397
                    "type=\"application\">\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   398
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   399
    # interactive_config property
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   400
    # Set to true if no profiles were provided in reconfiguration scenario.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   401
    # Othwerwise set it to false.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   402
    if sub_cmd == CONFIGURE and not options.profile:
1339
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   403
        fhdl.writelines("<propval name=\"interactive_config\" type=\"boolean\""
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   404
                        " value=\"true\"/>\n")
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   405
    else:
1339
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   406
        fhdl.writelines("<propval name=\"interactive_config\" type=\"boolean\""
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   407
                        " value=\"false\"/>\n")
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   408
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   409
    # config_group from -g option
1339
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   410
    fhdl.writelines("<propval name=\"config_groups\" type=\"astring\""
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   411
                    " value=\"")
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   412
    for grp in options.grouping:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   413
        fhdl.writelines("%s " % grp)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   414
    fhdl.writelines("\"/>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   415
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   416
    # configure flag
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   417
    # Set to true in reconfiguration scenario, otherwise set to false.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   418
    if sub_cmd == CONFIGURE:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   419
        fhdl.writelines("<propval name=\"configure\" type=\"boolean\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   420
                        "value=\"true\"/>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   421
    else:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   422
        fhdl.writelines("<propval name=\"configure\" type=\"boolean\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   423
                        "value=\"false\"/>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   424
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   425
    fhdl.writelines("</property_group>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   426
    fhdl.writelines("</instance>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   427
    fhdl.writelines("</service>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   428
    fhdl.writelines("</service_bundle>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   429
    fhdl.close()
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   430
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   431
    profile = CONFIG_PROFILE_DEST
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   432
    if options.alt_root:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   433
        profile = options.alt_root + profile
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   434
    # Move file to target destination
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   435
    shutil.move(TMP_CONFIG_PROFILE, profile)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   436
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   437
    # create profile configuring milestone/unconfig milestone
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   438
    fhdl = open(TMP_UNCONFIG_PROFILE, "w")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   439
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   440
    # Header and DTD
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   441
    fhdl.writelines("<?xml version='1.0'?>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   442
    fhdl.writelines("<!DOCTYPE service_bundle SYSTEM "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   443
                    "'/usr/share/lib/xml/dtd/service_bundle.dtd.1'>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   444
    fhdl.writelines("<service_bundle type=\"profile\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   445
                    "name=\"unconfig_profile\">\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   446
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   447
    # unconfig milestone
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   448
    fhdl.writelines("<service name=\"milestone/unconfig\" version=\"1\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   449
                    "type=\"service\">\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   450
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   451
    # configuration property group
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   452
    fhdl.writelines("<property_group name=\"sysconfig\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   453
                    "type=\"application\">\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   454
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   455
    # shutdown property default is false, true if -s was specified.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   456
    if options.shutdown:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   457
        fhdl.writelines("<propval name=\"shutdown\" type=\"boolean\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   458
                        "value=\"true\"/>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   459
    else:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   460
        fhdl.writelines("<propval name=\"shutdown\" type=\"boolean\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   461
                        "value=\"false\"/>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   462
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   463
    # destructive property default is false, true if --destructive
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   464
    # was specified.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   465
    if options.destructive:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   466
        fhdl.writelines("<propval name=\"destructive_unconfig\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   467
                        "type=\"boolean\" value=\"true\"/>\n")
1425
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   468
    else:
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   469
        fhdl.writelines("<propval name=\"destructive_unconfig\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   470
                        "type=\"boolean\" value=\"false\"/>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   471
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   472
    # unconfig_groups from -g option
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   473
    fhdl.writelines("<propval name=\"unconfig_groups\" type=\"astring\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   474
                    "value=\"")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   475
    for grp in options.grouping:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   476
        fhdl.writelines("%s " % grp)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   477
    fhdl.writelines("\"/>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   478
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   479
    # unconfigure flag, always true
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   480
    fhdl.writelines("<propval name=\"unconfigure\" type=\"boolean\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   481
                    "value=\"true\"/>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   482
    fhdl.writelines("</property_group>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   483
    fhdl.writelines("</service>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   484
    fhdl.writelines("</service_bundle>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   485
    fhdl.close()
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   486
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   487
    profile = UNCONFIG_PROFILE_DEST
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   488
    if options.alt_root:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   489
        profile = options.alt_root + profile
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   490
    # Move file to target destination
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   491
    shutil.move(TMP_UNCONFIG_PROFILE, profile)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   492
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   493
1339
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   494
def profile_is_valid(profile_name):
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   495
    '''Validate system configuration profile:
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   496
        - profile has to have .xml extension,
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   497
          otherwise smf(5) refuses to apply it
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   498
        - profile has to syntactically validate using 'svccfg apply -n'
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   499
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   500
        Return: True if profile is valid, otherwise False
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   501
    '''
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   502
    # Check if profile contains .xml suffix.
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   503
    if not profile_name.endswith(".xml"):
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   504
        print _("Custom site profile %s is invalid, missing .xml suffix."
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   505
                 % profile_name)
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   506
        return False
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   507
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   508
    # Validate file syntactically.
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   509
    try:
1529
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   510
        Popen.check_call([SVCCFG, "apply", "-n", profile_name])
1339
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   511
    except CalledProcessError:
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   512
        print _("Custom site profile %s is invalid or has"
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   513
                 "invalid permissions." % profile_name)
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   514
        return False
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   515
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   516
    return True
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   517
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   518
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   519
def apply_profiles(profile_list):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   520
    '''Apply config profiles to the SMF repository.'''
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   521
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   522
    for profile in profile_list:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   523
        cmd = [SVCCFG, "apply", profile]
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   524
        try:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   525
            Popen.check_call(cmd, stderr=Popen.PIPE,
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   526
                             check_result=(Popen.STDERR_EMPTY, 0))
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   527
        except CalledProcessError as err:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   528
            print err.popen.stderr
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   529
            print _("Unable to apply SMF profile %s." % profile)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   530
            raise
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   531
1339
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   532
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   533
def valid_group_check(groupings, sub_cmd, parser):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   534
    '''Check to see if the grouping(s) specified are valid.'''
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   535
    if sub_cmd[0] == CREATE_PROFILE:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   536
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   537
        # Check that the grouping specified is valid.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   538
        for grp in groupings:
1465
8deb3c32e26e 7087609 - sysconfig is broken w putback of 7060711
Ginnie Wray<virginia.wray@oracle.com>
parents: 1458
diff changeset
   539
            if grp not in SC_VALID_GROUPS:
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   540
                err = "Grouping must be one of "
1465
8deb3c32e26e 7087609 - sysconfig is broken w putback of 7060711
Ginnie Wray<virginia.wray@oracle.com>
parents: 1458
diff changeset
   541
                for grping in SC_VALID_GROUPS:
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   542
                    err += grping + " "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   543
                parser.error(err)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   544
    else:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   545
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   546
        if len(groupings) > 1:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   547
            parser.error(SUPPORT_ERR)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   548
        if groupings[0] != SYSTEM:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   549
            parser.error(SUPPORT_ERR)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   550
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   551
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   552
def parse_create_profile_args(parser, args):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   553
    '''Parses command line options for 'create-profile' sysconfig subcommand.
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   554
    '''
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   555
    (options, sub_cmd) = parser.parse_args(args)
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   556
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   557
    # List of configuration groups - entries are separated by commas
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   558
    options.grouping = options.grouping.split(',')
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   559
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   560
    # Check that the functional groups requested are valid
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   561
    valid_group_check(options.grouping, sub_cmd, parser)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   562
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   563
    # If the user specified 'system' in a list of groups, configure all groups.
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   564
    if SC_GROUP_SYSTEM in options.grouping:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   565
        options.grouping = SC_ALL_GROUPS
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   566
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   567
    # Run Install Engine in debug mode
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   568
    options.debug = (options.log_level.lower() in ['debug', 'input'])
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   569
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   570
    log_level = options.log_level.upper()
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   571
    if hasattr(logging, log_level):
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   572
        options.log_level = getattr(logging, log_level.upper())
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   573
    elif log_level == LOG_NAME_INPUT:
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   574
        options.log_level = LOG_LEVEL_INPUT
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   575
    else:
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   576
        raise IOError(2, "Invalid --log-level parameter", log_level.lower())
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   577
1529
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   578
    #
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   579
    # Most of filesystems (modulo tmpfs(7FS) ones) are read-only
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   580
    # in ROZR non-global zone booted in read-only mode. In such case,
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   581
    # redirect log file to writable directory.
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   582
    #
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   583
    if _in_rozr_zone():
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   584
        log_file_basename = os.path.basename(options.logname)
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   585
        options.logname = os.path.join(VOLATILE_PATH, log_file_basename)
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   586
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   587
    return (options, sub_cmd)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   588
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   589
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   590
def do_create_profile(options):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   591
    '''Run System Configuration Interactive Tool in order to create
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   592
    System Configuration profile'''
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   593
    try:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   594
        _prepare_engine(options)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   595
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   596
        # insert sysconfig CLI options into DOC
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   597
        doc_options = SysConfigOptions(options)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   598
        doc = InstallEngine.get_instance().doc.persistent
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   599
        doc.insert_children(doc_options)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   600
1529
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   601
        # Navigate user through the set of configuration screens. Generate
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   602
        # resulting profile only if user went through the complete set of
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   603
        # sysconfig screens.
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   604
        if _show_screens(options):
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   605
            # First set the umask read-only by user (root).
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   606
            # Then let the ManifestWriter generate resulting SC profile.
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   607
            # Finally, reset umask to the original value.
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   608
            orig_umask = os.umask(0377)
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   609
            eng = InstallEngine.get_instance()
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   610
            (status, failed_cps) = eng.execute_checkpoints()
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   611
            os.umask(orig_umask)
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   612
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   613
            # If ManifestWriter failed to create SC profile, inform user
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   614
            # and exit with error.
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   615
            if status != InstallEngine.EXEC_SUCCESS:
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   616
                print _("Failed to generate SC profile.")
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   617
                _exit(options.logname, errcode=1)
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   618
            else:
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   619
                print _("SC profile successfully generated.")
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   620
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   621
        _exit(options.logname, errcode=0)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   622
    except SystemExit:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   623
        raise
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   624
    except:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   625
        if LOGGER is None:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   626
            # Error occurred before logging is setup; no place to
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   627
            # dump the traceback
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   628
            raise
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   629
        LOGGER.exception(_("An unhandled exception occurred."))
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   630
        exc_type, exc_value = sys.exc_info()[:2]
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   631
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   632
        try:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   633
            doc = InstallEngine.get_instance().doc.persistent
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   634
            sc_prof = doc.get_first_child(name="sysconfig")
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   635
            LOGGER.error("Sysconfig profile:\n%s", sc_prof)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   636
        except:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   637
            # Ignore any errors to avoid masking the original exception
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   638
            pass
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   639
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   640
        print _("An unhandled exception occurred.")
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   641
        if exc_value:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   642
            print '\t%s: "%s"' % (exc_type.__name__, exc_value)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   643
        else:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   644
            print "\t%s" % exc_type.__name__
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   645
        print _("Full traceback data is in the log")
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   646
        _exit(options.logname, errcode=1)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   647
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   648
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   649
def do_unconfigure(sub_cmd, options):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   650
    '''Performs the requested unconfigure operations'''
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   651
    try:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   652
        create_config_profiles(sub_cmd, options)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   653
    except IOError:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   654
        print _("IO error creating profile")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   655
        sys.exit(SU_FATAL_ERR)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   656
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   657
    if not options.alt_root:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   658
        try:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   659
            apply_profiles([CONFIG_PROFILE_DEST, UNCONFIG_PROFILE_DEST])
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   660
        except:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   661
            print _("Unable to apply the unconfigure parameters to the image")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   662
            sys.exit(SU_FATAL_ERR)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   663
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   664
        # system-unconfig is an SMF milestone. Bring the
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   665
        # system down to the milestone.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   666
        cmd = [SVCADM, "milestone", "unconfig"]
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   667
        try:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   668
            Popen.check_call(cmd, stderr=Popen.PIPE,
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   669
                check_result=(Popen.STDERR_EMPTY, 0))
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   670
        except CalledProcessError as err:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   671
            print err.popen.stderr
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   672
            print _("Unable to initiate unconfiguration process.")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   673
            sys.exit(SU_FATAL_ERR)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   674
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   675
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   676
def parse_unconfig_args(parser, args):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   677
    # Now parse options specific to the subcommand
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   678
    (options, sub_cmd) = parser.parse_args(args)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   679
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   680
    options.alt_root = os.getenv(ALT_ROOT_ENV_VAR)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   681
1529
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   682
    # If operating on alternate root, verify given path.
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   683
    if options.alt_root:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   684
        if not os.access(options.alt_root, os.W_OK):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   685
            print _("Root filesystem provided for the non-global zone"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   686
                    " does not exist")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   687
            sys.exit(SU_FATAL_ERR)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   688
1529
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   689
    #
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   690
    # unconfiguration/reconfiguration is not permitted in ROZR non-global
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   691
    # zone unless such zone is booted in writable mode.
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   692
    # When operating in alternate root mode, skip that check, since in that
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   693
    # case ROZR zone would be manipulated from global zone. That along with
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   694
    # previous check guarantees writable access.
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   695
    #
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   696
    if not options.alt_root and _in_rozr_zone():
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   697
        print _("Root filesystem mounted read-only, '%s' operation"
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   698
                 " not permitted." % sub_cmd[0])
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   699
        print _("The likely cause is that sysconfig(1m) was invoked"
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   700
                 " in ROZR non-global zone.")
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   701
        print _("In that case, see mwac(5) and zonecfg(1m) man pages"
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   702
                 " for additional information.")
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   703
1529
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   704
        sys.exit(SU_FATAL_ERR)
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   705
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   706
    # At this time, it is believed that there is no point in allowing
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   707
    # the prompt to be displayed in the alternate root case. Since there is no
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   708
    # use case, let's not explode our test matrix.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   709
    if options.alt_root and options.shutdown:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   710
        parser.error("Invalid to specify -s option with an alternate root")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   711
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   712
    # If no grouping is specified, that implies a system level unconfiguration.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   713
    # Confirm with the user that this is what they want for security reasons.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   714
    if not options.grouping:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   715
        if sub_cmd[0] == CONFIGURE:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   716
            print _("This program will re-configure your system.")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   717
        else:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   718
            print _("This program will unconfigure your system.")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   719
            print _("The system will be reverted to a \"pristine\" state.")
1339
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   720
            print _("It will not have a name or know about other systems"
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   721
                    " or networks.")
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   722
1458
43f8cafb3909 7082668 gui-install displays always in English
John Fischer <john.fischer@oracle.com>
parents: 1425
diff changeset
   723
        msg = _("Do you want to continue (y/[n])? ")
43f8cafb3909 7082668 gui-install displays always in English
John Fischer <john.fischer@oracle.com>
parents: 1425
diff changeset
   724
        confirm = raw_input(msg.encode(get_encoding()))
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   725
        if confirm.lower() != "y":
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   726
            sys.exit(SU_OK)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   727
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   728
        # They have confirmed, set grouping to system.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   729
        options.grouping = [SYSTEM]
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   730
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   731
    # Formulate the comma separated string into a list
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   732
    for grp in options.grouping:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   733
        if COMMA in grp:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   734
            options.grouping.extend(map(str.strip, grp.split(",")))
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   735
            options.grouping.remove(grp)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   736
            break
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   737
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   738
    # If the user specifies a list of groups and one of them is system set
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   739
    # to just system since it is a superset of all other groupings.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   740
    if len(options.grouping) > 1 and SYSTEM in options.grouping:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   741
        options.grouping = [SYSTEM]
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   742
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   743
    if options.alt_root:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   744
        svccfg_repository = os.path.join(options.alt_root, SMF_REPOSITORY)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   745
        os.environ["SVCCFG_REPOSITORY"] = svccfg_repository
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   746
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   747
    # Check that the functional groups requested are valid
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   748
    valid_group_check(options.grouping, sub_cmd, parser)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   749
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   750
    # If not operating on the alternate root, we can and must check to make
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   751
    # sure that the grouping specified has services of that grouping on the
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   752
    # image.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   753
    if not options.alt_root and SYSTEM not in options.grouping:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   754
        # Check that there exist unconfigurable services with the specified
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   755
        # grouping on the machine.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   756
        cmd = [SVCPROP, "-p", "unconfigure/exec", "*"]
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   757
        p_ret = Popen.check_call(cmd, stdout=Popen.STORE, stderr=Popen.DEVNULL,
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   758
                                 check_result=Popen.ANY)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   759
        unconfigurable_svcs = p_ret.stdout.split("\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   760
        for opt_grp in options.grouping:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   761
            found = False
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   762
            for svcs in unconfigurable_svcs:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   763
                if svcs:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   764
                    svc = svcs.split("/:properties")[0]
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   765
                    cmd = [SVCPROP, "-p", "sysconfig/group", svc]
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   766
                    p_ret = Popen.check_call(cmd, stdout=Popen.STORE,
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   767
                        stderr=Popen.DEVNULL, check_result=Popen.ANY)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   768
                    grping = p_ret.stdout.strip()
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   769
                    if grping == opt_grp:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   770
                        found = True
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   771
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   772
            if not found:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   773
                print _("There are no services on the system with grouping "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   774
                        "of %s" % opt_grp)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   775
                sys.exit(1)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   776
1339
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   777
    #
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   778
    # The user specified a profile file or a directory with profiles to use
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   779
    # on the configure. Verify that supplied profiles contain .xml suffix
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   780
    # (otherwise smf(5) will not apply them) and syntactically
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   781
    # validate them. Then copy them to the temporary location,
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   782
    # /etc/svc/profile/sc/ directory. The unconfig milestone will move
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   783
    # them to the site area when it runs. We can't put profiles
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   784
    # to site directory right now because they may end up applied before
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   785
    # unconfiguration runs and then removed during unconfiguration.
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   786
    #
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   787
    if sub_cmd[0] == CONFIGURE and options.profile:
1339
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   788
        # Verify that supplied path (file or directory) exists.
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   789
        if not os.path.exists(options.profile):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   790
            parser.error("%s does not exist." % options.profile)
1339
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   791
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   792
        # Remove all of /etc/svc/profile/sc
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   793
        custom_profile_dir = CUSTOM_PROFILE_DIR
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   794
        if options.alt_root:
1339
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   795
            custom_profile_dir = os.path.join(options.alt_root,
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   796
                                              custom_profile_dir)
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   797
        else:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   798
            custom_profile_dir = os.path.join("/", custom_profile_dir)
1339
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   799
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   800
        if os.path.exists(custom_profile_dir):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   801
            for root, dirs, files in os.walk(custom_profile_dir):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   802
                for profile_file in files:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   803
                    os.unlink(os.path.join(root, profile_file))
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   804
        else:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   805
            os.mkdir(custom_profile_dir)
1339
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   806
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   807
        if os.path.isdir(options.profile):
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   808
            #
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   809
            # Profile directory is specified.
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   810
            # Directory has to contain at least one profile. Start with
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   811
            # assumption that given directory does not contain any
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   812
            # profile.
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   813
            #
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   814
            profile_dir_is_empty = True
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   815
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   816
            # Validate profiles - all supplied profiles have to validate.
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   817
            for root, dirs, files in os.walk(options.profile):
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   818
                for pfile in files:
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   819
                    profile_file = os.path.join(root, pfile)
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   820
                    # Abort if profile is invalid.
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   821
                    if not profile_is_valid(profile_file):
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   822
                        sys.exit(SU_FATAL_ERR)
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   823
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   824
                    # Place profile in the temporary site profile area.
1620
f7367223f0c2 PSARC/2012/043 Solaris OCM Phase 2 (Installer integration)
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1598
diff changeset
   825
                    orig_umask = os.umask(0377)
1339
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   826
                    shutil.copyfile(profile_file,
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   827
                                    os.path.join(custom_profile_dir, pfile))
1620
f7367223f0c2 PSARC/2012/043 Solaris OCM Phase 2 (Installer integration)
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1598
diff changeset
   828
                    os.umask(orig_umask)
1339
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   829
                    profile_dir_is_empty = False
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   830
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   831
            # If no profile was found in given directory, abort.
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   832
            if profile_dir_is_empty:
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   833
                print _("Directory %s does not contain any profile."
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   834
                         % options.profile)
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   835
                sys.exit(SU_FATAL_ERR)
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   836
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   837
        else:
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   838
            # Profile is a file - validate it.
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   839
            if not profile_is_valid(options.profile):
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   840
                sys.exit(SU_FATAL_ERR)
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   841
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   842
            # Place profile in the temporary site profile area.
1481
925433e3fb5a 7084155 - Problem with install/configuration
Ginnie Wray<virginia.wray@oracle.com>
parents: 1465
diff changeset
   843
            orig_umask = os.umask(0377)
1339
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   844
            shutil.copyfile(options.profile, os.path.join(custom_profile_dir,
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   845
                            os.path.basename(options.profile)))
1620
f7367223f0c2 PSARC/2012/043 Solaris OCM Phase 2 (Installer integration)
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1598
diff changeset
   846
            os.umask(orig_umask)
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   847
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   848
    #
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   849
    # if there is a request to re-configure system in interactive way
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   850
    # (using SCI tool), check if we are on console, since this is where SCI
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   851
    # tool will be lauched. If we are not on console, let user confirm this
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   852
    # is really what one wants to do.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   853
    #
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   854
    if sub_cmd[0] == CONFIGURE and not options.profile \
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   855
        and not options.alt_root:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   856
1425
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   857
        # For now, sysconfig should halt when the user runs sysconfig configure
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   858
        # after running sysconfig unconfigure. When the functionality that
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   859
        # enables the unconfiguration of individual groupings is implemented,
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   860
        # this may need to be revisited. Currently, system is the only group
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   861
        # that can be configured/unconfigured.
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   862
        cmd = [SVCPROP, "-c", "-p", "sysconfig/unconfigure",
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   863
               "milestone/unconfig"]
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   864
        p_ret = Popen.check_call(cmd, stdout=Popen.STORE, stderr=Popen.DEVNULL,
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   865
                             check_result=Popen.ANY)
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   866
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   867
        unconfigure_has_occurred = p_ret.stdout.strip()
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   868
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   869
        cmd = [SVCPROP, "-c", "-p", "sysconfig/configure", "milestone/config"]
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   870
        p_ret = Popen.check_call(cmd, stdout=Popen.STORE, stderr=Popen.DEVNULL,
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   871
                             check_result=Popen.ANY)
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   872
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   873
        config_has_occurred = p_ret.stdout.strip()
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   874
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   875
        if unconfigure_has_occurred == 'true' \
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   876
            and config_has_occurred == 'false':
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   877
            print _("Error: system has been unconfigured. Reboot to invoke "
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   878
               "the SCI Tool and configure the system.")
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   879
            sys.exit(SU_FATAL_ERR)
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
   880
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   881
        print _("Interactive configuration requested.")
1672
6e0bd17ca3f5 7055372 Installation with very long host name failed at checkpoint apply-sysconfig
Drew Fisher <drew.fisher@oracle.com>
parents: 1631
diff changeset
   882
        print _("System Configuration Interactive (SCI) tool will be "
6e0bd17ca3f5 7055372 Installation with very long host name failed at checkpoint apply-sysconfig
Drew Fisher <drew.fisher@oracle.com>
parents: 1631
diff changeset
   883
                "launched on console.")
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   884
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   885
        cmd = [TTY]
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   886
        try:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   887
            p = Popen.check_call(cmd, stdout=Popen.STORE, stderr=Popen.PIPE,
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   888
                                 check_result=(Popen.STDERR_EMPTY, 0))
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   889
        except CalledProcessError as err:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   890
            print err.popen.stderr
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   891
            # if tty fails, we may not be able to interact with user.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   892
            # In this case, skip the confirmation prompt.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   893
        else:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   894
            terminal_device = p.stdout.strip()
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   895
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   896
            if terminal_device != CONSOLE:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   897
                print _("Since you are currently not logged on console,\n"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   898
                         "you may not be able to navigate SCI tool.")
1458
43f8cafb3909 7082668 gui-install displays always in English
John Fischer <john.fischer@oracle.com>
parents: 1425
diff changeset
   899
                msg = _("Would you like to proceed with re-configuration "
43f8cafb3909 7082668 gui-install displays always in English
John Fischer <john.fischer@oracle.com>
parents: 1425
diff changeset
   900
                        "(y/[n])? ")
43f8cafb3909 7082668 gui-install displays always in English
John Fischer <john.fischer@oracle.com>
parents: 1425
diff changeset
   901
                confirm = raw_input(msg.encode(get_encoding()))
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   902
                if confirm.lower() != "y":
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   903
                    sys.exit(SU_OK)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   904
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   905
    return (options, sub_cmd)
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   906
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   907
1529
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   908
def _in_rozr_zone():
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   909
    '''Return True if immutable (aka ROZR) zone booted in read only
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   910
    mode is detected. Otherwise return False.'''
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   911
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   912
    rozr_test_binary = '/sbin/sh'
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   913
    return (not os.access(rozr_test_binary, os.W_OK))
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   914
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
   915
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   916
def _parse_options(arguments):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   917
    ''' Parses sysconfig subcommands'''
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   918
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   919
    usage = "\t%prog unconfigure [-s] [-g system] " + \
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   920
            "[--destructive]" + \
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   921
            "\n\t%prog configure [-s] [-g system] " + \
1339
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   922
            "[-c config_profile.xml | dir] [--destructive]" + \
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   923
            "\n\t%prog create-profile [-g system] " + \
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   924
            "[-o output_file] [-l logfile] [-v verbosity] [-b]"
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   925
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   926
    parser = OptionParser(usage=usage)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   927
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   928
    try:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   929
        i = arguments.index(DASH_G)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   930
        try:
1339
18ceb31d2b0b 7061367 Install technologies should benefit from PSARC/2011/097 for purposes of locale(5) configuration
Jan Damborsky <dambi@opensolaris.org>
parents: 1322
diff changeset
   931
            if ' ' in arguments[i + 1]:
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   932
                parser.error("groupings must be a comma separated list")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   933
                sys.exit(SU_FATAL_ERR)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   934
        except IndexError:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   935
            # Not necessarily an error if there isn't something at the
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   936
            # index value. The user may have passed in configuration with
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   937
            # no options, which defaults to system
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   938
            pass
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   939
    except ValueError:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   940
        # no -g option found
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   941
        pass
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   942
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   943
    # This allows parsing of different subcommand options. It stops
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   944
    # parsing after the subcommand is populated.
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   945
    parser.disable_interspersed_args()
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   946
    (options, sub_cmd) = parser.parse_args(arguments)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   947
    parser.enable_interspersed_args()
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   948
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   949
    if not sub_cmd:
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   950
        parser.error("Subcommand not specified\n"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   951
            "Please select one of the following subcommands: "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   952
            "%s" % SUBCOMMANDS)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   953
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   954
    if sub_cmd[0] == CONFIGURE or sub_cmd[0] == UNCONFIGURE:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   955
        # Set up valid options shared by configure and unconfigure subcommands.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   956
        parser.add_option("-g", dest="grouping", action="callback",
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   957
                          callback=vararg_callback,
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   958
                          help="Grouping to %s" % sub_cmd[0])
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   959
        parser.add_option("-s", action="store_true",
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   960
                          dest="shutdown", default=False,
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   961
                          help="Shuts down the system after the "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   962
                          "unconfiguration")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   963
        parser.add_option("--destructive", dest="destructive",
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   964
                          default=False, action="store_true",
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   965
                          help="Do not preserve system data for a "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   966
                          "group")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   967
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   968
        # configure subcommand additionally supports '-c profile'.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   969
        if sub_cmd[0] == CONFIGURE:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   970
            parser.add_option("-c", dest="profile",
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   971
                              help="Custom site profile to use")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   972
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   973
        (options, sub_cmd) = parse_unconfig_args(parser, arguments)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   974
    elif sub_cmd[0] == CREATE_PROFILE:
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   975
        parser.add_option("-g", dest="grouping",
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   976
                          help=_("Grouping to configure"),
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   977
                          default=SC_GROUP_SYSTEM)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   978
        parser.add_option("-o", dest="profile", metavar="FILE",
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   979
                          help=_("Saves created system configuration profile "
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   980
                          "into FILE.\t\t[default: %default]"),
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   981
                          default=DEFAULT_SC_LOCATION)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   982
        parser.add_option("-l", "--log-location", dest="logname",
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   983
                          help=_("Set log location to FILE "
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   984
                          "(default: %default)"),
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1672
diff changeset
   985
                          metavar="FILE", default=DEFAULT_LOG_LOC)
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   986
        parser.add_option("-v", "--log-level", dest="log_level",
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   987
                          default=DEFAULT_LOG_LEVEL,
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   988
                          help=_("Set log verbosity to LEVEL. In order of "
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   989
                          "increasing verbosity, valid values are 'error' "
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   990
                          "'warn' 'info' 'debug' or 'input'\n[default:"
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   991
                          " %default]"),
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   992
                          choices=["error", "warn", "info", "debug", "input"],
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   993
                          metavar="LEVEL")
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   994
        parser.add_option("-b", "--no-color", action="store_true",
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   995
                          dest="force_bw", default=False,
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   996
                          help=_("Force the tool to run in "
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   997
                          "black and white. This may be useful on some SPARC "
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   998
                          "machines with unsupported frame buffers\n"))
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   999
        (options, sub_cmd) = parse_create_profile_args(parser, arguments)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
  1000
    else:
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1001
        parser.error("Invalid subcommand \n"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1002
            "Please select one of the following subcommands: "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1003
            "%s" % SUBCOMMANDS)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1004
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
  1005
    return (options, sub_cmd)
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1006
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1007
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1008
def _exit(logname, errcode=0):
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1009
    '''Close out the logger and exit with errcode'''
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1010
    LOGGER.info("**** END ****")
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1011
    # LOGGER.close() # LOGGER.close() is broken - CR 7012566
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1012
    print _("Exiting System Configuration Tool. Log is available at:\n"
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1013
            "%s") % logname
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1014
    if isinstance(errcode, unicode):
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1015
        # pylint: disable-msg=E1103
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1016
        errcode = errcode.encode(get_encoding())
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1017
    sys.exit(errcode)
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1018
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1019
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1020
def _make_screen_list(main_win):
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1021
    screens = []
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1022
    screens.append(WelcomeScreen(main_win))
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
  1023
    screens.extend(get_screens_from_groups(main_win))
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1024
    screens.append(SummaryScreen(main_win))
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1025
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1026
    return screens
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1027
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1028
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1029
def _show_screens(options):
1529
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
  1030
    '''Navigate user through the set of configuration screens.
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
  1031
    Return True if user went through the complete set of screens,
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
  1032
    otherwise return False.'''
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1033
    with terminalui as initscr:
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1034
        win_size_y, win_size_x = initscr.getmaxyx()
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1035
        if win_size_y < 24 or win_size_x < 80:
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1036
            msg = _("     Terminal too small. Min size is 80x24."
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1037
                    " Current size is %(x)ix%(y)i.") % \
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1038
                    {'x': win_size_x, 'y': win_size_y}
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1039
            sys.exit(msg)
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1040
        screen_list = ScreenList()
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1041
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1042
        actions = [Action(curses.KEY_F2, _("Continue"), screen_list.get_next),
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1043
                   Action(curses.KEY_F3, _("Back"),
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1044
                          screen_list.previous_screen),
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1045
                   Action(curses.KEY_F6, _("Help"), screen_list.show_help),
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1046
                   Action(curses.KEY_F9, _("Quit"), screen_list.quit)]
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1047
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1048
        main_win = MainWindow(initscr, screen_list, actions,
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1049
                              force_bw=options.force_bw)
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1050
        screen_list.help = HelpScreen(main_win, _("Help Topics"),
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1051
                                      _("Help Index"),
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1052
                                      _("Select a topic and press Continue."))
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1053
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1054
        win_list = _make_screen_list(main_win)
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1055
        screen_list.help.setup_help_data(win_list)
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1056
        screen_list.screen_list = win_list
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1057
        screen = screen_list.get_next()
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1058
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1059
        signal.signal(signal.SIGINT, signal.SIG_IGN)
1529
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
  1060
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
  1061
        try:
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
  1062
            while screen is not None:
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
  1063
                eng = InstallEngine.get_instance()
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
  1064
                sc_prof = eng.doc.persistent.get_first_child(name="sysconfig")
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
  1065
                LOGGER.debug("Sysconfig profile:\n%s", sc_prof)
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
  1066
                LOGGER.debug("Displaying screen: %s", type(screen))
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
  1067
                screen = screen.show()
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
  1068
        except QuitException:
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
  1069
            LOGGER.info("User quit the application prematurely.")
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
  1070
            return False
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
  1071
        else:
e73fd49aeb3a 7066863 'sysconfig create-profile' in a ROZR zone causes a traceback
Jan Damborsky <dambi@opensolaris.org>
parents: 1481
diff changeset
  1072
            return True
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1073
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1074
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1075
def _prepare_engine(options):
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1076
    '''Initialize the InstallEngine'''
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1672
diff changeset
  1077
    InstallEngine(options.logname, loglevel=options.log_level,
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1672
diff changeset
  1078
                  debug=options.debug, exclusive_rw=options.exclusive_rw)
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1079
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1080
    logger = logging.getLogger(INSTALL_LOGGER_NAME)
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1081
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1082
    # Don't set the global LOGGER until we're certain that logging
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1083
    # is up and running, so the main() except clause can figure out
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1084
    # if exception data can be written to the log or if it needs to
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1085
    # dump to stdout
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1086
    global LOGGER
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1087
    LOGGER = logger
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1088
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1089
    terminalui.init_logging(INSTALL_LOGGER_NAME)
1425
d57213cb0ef9 7077953 - sysconfig unconfigure needs to provide a more useful end state.
Ginnie Wray<virginia.wray@oracle.com>
parents: 1422
diff changeset
  1090
1279
27b2fdc9e5e8 7067136 S11 SCI tool will not write profile to default directory, generating unhandled exception
William Schumann <william.schumann@sun.com>
parents: 1194
diff changeset
  1091
    # if no directory in output profile path
27b2fdc9e5e8 7067136 S11 SCI tool will not write profile to default directory, generating unhandled exception
William Schumann <william.schumann@sun.com>
parents: 1194
diff changeset
  1092
    if not os.path.dirname(options.profile):
27b2fdc9e5e8 7067136 S11 SCI tool will not write profile to default directory, generating unhandled exception
William Schumann <william.schumann@sun.com>
parents: 1194
diff changeset
  1093
        # explicitly provide default directory for manifest writer
27b2fdc9e5e8 7067136 S11 SCI tool will not write profile to default directory, generating unhandled exception
William Schumann <william.schumann@sun.com>
parents: 1194
diff changeset
  1094
        options.profile = './' + options.profile
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
  1095
    register_checkpoint(sc_profile=options.profile)
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1096
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1097
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1098
def _init_locale():
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
  1099
    '''Initializes the locale'''
1579
ccbee8781705 7118945 installer unnecessarily sets NIS property config.use_broadcast
Jan Damborsky <dambi@opensolaris.org>
parents: 1529
diff changeset
  1100
    try:
ccbee8781705 7118945 installer unnecessarily sets NIS property config.use_broadcast
Jan Damborsky <dambi@opensolaris.org>
parents: 1529
diff changeset
  1101
        locale.setlocale(locale.LC_ALL, "")
ccbee8781705 7118945 installer unnecessarily sets NIS property config.use_broadcast
Jan Damborsky <dambi@opensolaris.org>
parents: 1529
diff changeset
  1102
    except locale.Error:
ccbee8781705 7118945 installer unnecessarily sets NIS property config.use_broadcast
Jan Damborsky <dambi@opensolaris.org>
parents: 1529
diff changeset
  1103
        print _("System configured with invalid locale(5), "
ccbee8781705 7118945 installer unnecessarily sets NIS property config.use_broadcast
Jan Damborsky <dambi@opensolaris.org>
parents: 1529
diff changeset
  1104
                 "falling back to C.")
ccbee8781705 7118945 installer unnecessarily sets NIS property config.use_broadcast
Jan Damborsky <dambi@opensolaris.org>
parents: 1529
diff changeset
  1105
        locale.setlocale(locale.LC_ALL, "C")
ccbee8781705 7118945 installer unnecessarily sets NIS property config.use_broadcast
Jan Damborsky <dambi@opensolaris.org>
parents: 1529
diff changeset
  1106
1631
f8841ae44dc6 7117291 Deliver translatable content in a separate IPS package
Takeshi Asano <takeshi.asano@oracle.com>
parents: 1620
diff changeset
  1107
    gettext.install("solaris_install_systemconfig",
f8841ae44dc6 7117291 Deliver translatable content in a separate IPS package
Takeshi Asano <takeshi.asano@oracle.com>
parents: 1620
diff changeset
  1108
                    "/usr/share/locale",
f8841ae44dc6 7117291 Deliver translatable content in a separate IPS package
Takeshi Asano <takeshi.asano@oracle.com>
parents: 1620
diff changeset
  1109
                    unicode=True)
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1110
    set_wrap_on_whitespace(_("DONT_TRANSLATE_BUT_REPLACE_msgstr_WITH_True_"
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1111
                             "OR_False: Should wrap text on whitespace in"
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1112
                             " this language"))
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1113
    BaseScreen.set_default_quit_text(_("Confirm: Quit?"),
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1114
                                     _("Do you really want to quit?"),
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1115
                                     _("Cancel"),
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1116
                                     _("Quit"))
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1117
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1118
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1119
def main():
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
  1120
    '''Main Function'''
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1121
    _init_locale()
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
  1122
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1123
    # Check that the command is executed by the root user
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1124
    if os.geteuid() != 0:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1125
        print _("Error: Root privileges are required for "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1126
               "this command.")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1127
        sys.exit(SU_FATAL_ERR)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1128
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
  1129
    (options, sub_cmd) = _parse_options(sys.argv[1:])
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1130
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1131
    if sub_cmd[0] == CONFIGURE or sub_cmd[0] == UNCONFIGURE:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1132
        do_unconfigure(sub_cmd[0], options)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1133
    elif sub_cmd[0] == CREATE_PROFILE:
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1672
diff changeset
  1134
        # Set the exclusive read write flag to true
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1672
diff changeset
  1135
        options.exclusive_rw = True
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
  1136
        do_create_profile(options)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
  1137
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
  1138
    sys.exit(SU_OK)
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1139
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1140
if __name__ == '__main__':
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1141
    main()