usr/src/cmd/system-config/__init__.py
author William Schumann <william.schumann@sun.com>
Mon, 15 Aug 2011 02:37:08 -0700
changeset 1385 0f74e9631185
parent 1339 18ceb31d2b0b
permissions -rw-r--r--
7079223 Default name of profile created by 'sysconfig create-profile' not consistent
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
#
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    22
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
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
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    29
import gettext
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    30
import atexit
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    31
import curses
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    32
import locale
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    33
import logging
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    34
from optparse import OptionParser
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    35
import os
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
    36
import shutil
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    37
import signal
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    38
import sys
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    39
1160
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1155
diff changeset
    40
from solaris_install import engine
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    41
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
    42
from solaris_install.data_object.data_dict import DataObjectDict
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
    43
from solaris_install import Popen, CalledProcessError
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
    44
from solaris_install.engine import InstallEngine, RollbackError
1322
101ceefb29c6 6985652 changes in text installer iso image for safe provision of localization without garbled display
Karen Tung <Karen.Tung@oracle.com>
parents: 1297
diff changeset
    45
from solaris_install.getconsole import get_console, SERIAL_CONSOLE
1160
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1155
diff changeset
    46
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
    47
    APPLY_SYSCONFIG_PROFILE_KEY
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    48
1322
101ceefb29c6 6985652 changes in text installer iso image for safe provision of localization without garbled display
Karen Tung <Karen.Tung@oracle.com>
parents: 1297
diff changeset
    49
#
101ceefb29c6 6985652 changes in text installer iso image for safe provision of localization without garbled display
Karen Tung <Karen.Tung@oracle.com>
parents: 1297
diff changeset
    50
# Determine whether LC_MESSAGES environment variable needs to be set
101ceefb29c6 6985652 changes in text installer iso image for safe provision of localization without garbled display
Karen Tung <Karen.Tung@oracle.com>
parents: 1297
diff changeset
    51
# or not.  This must be done before the gettext.translation() call so the
101ceefb29c6 6985652 changes in text installer iso image for safe provision of localization without garbled display
Karen Tung <Karen.Tung@oracle.com>
parents: 1297
diff changeset
    52
# correct localized messages are used.
101ceefb29c6 6985652 changes in text installer iso image for safe provision of localization without garbled display
Karen Tung <Karen.Tung@oracle.com>
parents: 1297
diff changeset
    53
#
101ceefb29c6 6985652 changes in text installer iso image for safe provision of localization without garbled display
Karen Tung <Karen.Tung@oracle.com>
parents: 1297
diff changeset
    54
console_type = get_console()
101ceefb29c6 6985652 changes in text installer iso image for safe provision of localization without garbled display
Karen Tung <Karen.Tung@oracle.com>
parents: 1297
diff changeset
    55
101ceefb29c6 6985652 changes in text installer iso image for safe provision of localization without garbled display
Karen Tung <Karen.Tung@oracle.com>
parents: 1297
diff changeset
    56
#
101ceefb29c6 6985652 changes in text installer iso image for safe provision of localization without garbled display
Karen Tung <Karen.Tung@oracle.com>
parents: 1297
diff changeset
    57
# If running from a serial console, translation will be enabled.
101ceefb29c6 6985652 changes in text installer iso image for safe provision of localization without garbled display
Karen Tung <Karen.Tung@oracle.com>
parents: 1297
diff changeset
    58
# If running on a physical console, translation will
101ceefb29c6 6985652 changes in text installer iso image for safe provision of localization without garbled display
Karen Tung <Karen.Tung@oracle.com>
parents: 1297
diff changeset
    59
# be disabled by setting LC_MESSAGES to C
101ceefb29c6 6985652 changes in text installer iso image for safe provision of localization without garbled display
Karen Tung <Karen.Tung@oracle.com>
parents: 1297
diff changeset
    60
#
101ceefb29c6 6985652 changes in text installer iso image for safe provision of localization without garbled display
Karen Tung <Karen.Tung@oracle.com>
parents: 1297
diff changeset
    61
if console_type != SERIAL_CONSOLE:
101ceefb29c6 6985652 changes in text installer iso image for safe provision of localization without garbled display
Karen Tung <Karen.Tung@oracle.com>
parents: 1297
diff changeset
    62
    os.environ["LC_MESSAGES"] = "C"
101ceefb29c6 6985652 changes in text installer iso image for safe provision of localization without garbled display
Karen Tung <Karen.Tung@oracle.com>
parents: 1297
diff changeset
    63
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    64
_ = gettext.translation("sysconfig", "/usr/share/locale",
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    65
                        fallback=True).ugettext
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    66
SCI_HELP = "/usr/share/sysconfig/help"
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
    67
COMMA = ","
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
    68
DASH_G = "-g"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
    69
SUPPORT_ERR = "system is the only supported grouping for configure " \
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
    70
                "and unconfigure"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
    71
SUBCOMMANDS = "unconfigure, configure, create-profile"
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    72
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    73
# system configuration groups
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    74
# hostname
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    75
SC_GROUP_IDENTITY = 'identity'
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    76
# networking
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    77
SC_GROUP_NETWORK = "network"
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    78
# naming services
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    79
SC_GROUP_NS = 'naming_services'
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    80
# keyboard layout
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    81
SC_GROUP_KBD = 'kbd_layout'
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    82
# date and time
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    83
SC_GROUP_DATETIME = 'date_time'
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    84
# timezone and locale
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    85
SC_GROUP_LOCATION = 'location'
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    86
# user and root account
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    87
SC_GROUP_USERS = 'users'
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    88
# pseudo-group - includes all available groups
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    89
SC_GROUP_SYSTEM = 'system'
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    90
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    91
# list of configuration groups
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    92
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
    93
                 SC_GROUP_KBD, SC_GROUP_LOCATION, SC_GROUP_DATETIME,
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    94
                 SC_GROUP_USERS]
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    95
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
    96
# 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
    97
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
    98
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
    99
SMF_REPOSITORY = "etc/svc/repository.db"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   100
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   101
CUSTOM_PROFILE_DIR = "etc/svc/profile/sc"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   102
1155
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
def get_sc_options_from_doc():
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   105
    '''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
   106
    doc = InstallEngine.get_instance().doc.persistent
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   107
    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
   108
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   109
    if sc_options is not None:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   110
        return sc_options.options
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   111
    else:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   112
        return None
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   113
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   114
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   115
def configure_group(group=None):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   116
    '''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
   117
    otherwise returns False'''
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   118
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   119
    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
   120
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   121
    # 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
   122
    # is to be configured
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   123
    if sc_options is None:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   124
        return True
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   125
    elif group in sc_options.grouping:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   126
        return True
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   127
    else:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   128
        return False
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   129
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   130
from solaris_install.logger import FileHandler, INSTALL_LOGGER_NAME
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   131
from solaris_install.sysconfig.date_time import DateTimeScreen
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   132
from solaris_install.sysconfig.network_nic_configure import NICConfigure
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   133
from solaris_install.sysconfig.network_nic_select import NICSelect
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   134
from solaris_install.sysconfig.network_type import NetworkTypeScreen
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   135
from solaris_install.sysconfig.profile import ConfigProfile, SMFConfig, \
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   136
                                              SMFInstance, SMFPropertyGroup, \
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   137
                                              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
   138
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
   139
                                                  NSDomain, \
1164
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   140
                                                  NSDNSServer, NSDNSSearch, \
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   141
                                                  NSLDAPProfile, \
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   142
                                                  NSLDAPProxyBindChooser, \
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   143
                                                  NSLDAPProxyBindInfo, \
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   144
                                                  NSNISAuto, NSNISIP
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   145
from solaris_install.sysconfig.summary import SummaryScreen
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   146
from solaris_install.sysconfig.timezone import TimeZone
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   147
from solaris_install.sysconfig.users import UserScreen
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   148
from solaris_install.sysconfig.welcome import WelcomeScreen
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   149
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   150
import terminalui
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   151
from terminalui import LOG_LEVEL_INPUT, LOG_NAME_INPUT
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   152
from terminalui.action import Action
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   153
from terminalui.base_screen import BaseScreen
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   154
from terminalui.help_screen import HelpScreen
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   155
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
   156
from terminalui.main_window import MainWindow
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   157
from terminalui.screen_list import ScreenList
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   158
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   159
SU_OK = 0
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   160
SU_FATAL_ERR = 1
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   161
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   162
# profile names
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   163
# profile configuring svc:/milestone/config:default service
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   164
CONFIG_PROFILE = "enable_sci.xml"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   165
# profile configuring svc:/milestone/unconfig milestone
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   166
UNCONFIG_PROFILE = "unconfig.xml"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   167
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   168
# directories
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   169
# temporary directory
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   170
VOLATILE_PATH = "/system/volatile"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   171
# smf site-profile directory
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   172
PROFILE_PATH = "/etc/svc/profile/site"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   173
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   174
# temporary profiles
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   175
TMP_CONFIG_PROFILE = os.path.join(VOLATILE_PATH, CONFIG_PROFILE)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   176
TMP_UNCONFIG_PROFILE = os.path.join(VOLATILE_PATH, UNCONFIG_PROFILE)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   177
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   178
# destination for profile configuring svc:/milestone/config:default service
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   179
CONFIG_PROFILE_DEST = os.path.join(PROFILE_PATH, CONFIG_PROFILE)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   180
# destination for profile configuring svc:/milestone/unconfig milestone
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   181
UNCONFIG_PROFILE_DEST = os.path.join(PROFILE_PATH, UNCONFIG_PROFILE)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   182
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   183
# 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
   184
DEFAULT_SC_PROFILE = "sc_profile.xml"
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   185
DEFAULT_SC_LOCATION = os.path.join(VOLATILE_PATH, "profile",
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   186
                                   DEFAULT_SC_PROFILE)
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   187
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   188
DEFAULT_LOG_LOCATION = "/var/tmp/install/sysconfig.log"
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   189
DEFAULT_LOG_LEVEL = "info"
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   190
LOG_FORMAT = ("%(asctime)s - %(levelname)-8s: "
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   191
              "%(filename)s:%(lineno)d %(message)s")
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   192
LOGGER = None
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   193
XSLT_FILE = os.environ.get('SC_XSLT',
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   194
                           '/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
   195
SC_FILE = DEFAULT_SC_LOCATION
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   196
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
   197
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   198
# sysconfig subcommands
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   199
CONFIGURE = "configure"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   200
UNCONFIGURE = "unconfigure"
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   201
CREATE_PROFILE = "create-profile"
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   202
SVCADM = "/usr/sbin/svcadm"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   203
SVCPROP = "/usr/bin/svcprop"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   204
SVCCFG = "/usr/sbin/svccfg"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   205
SYSTEM = "system"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   206
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   207
# Commands for the console
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   208
CTSTAT = "/usr/bin/ctstat"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   209
SVCPROP = "/usr/bin/svcprop"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   210
CONSOLE_LOGIN = "svc:/system/console-login:default"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   211
TTY = "/usr/bin/tty"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   212
CONSOLE = "/dev/console"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   213
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   214
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
   215
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   216
# DOC label for SysConfig options 
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   217
SC_OPTIONS_LABEL = "sc_options"
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   218
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
   219
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   220
class SysConfigOptions(DataObject):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   221
    '''System Configuration options'''
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   222
    
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   223
    def __init__(self, options=None):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   224
        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
   225
        self.options = options
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   226
    
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   227
    def to_xml(self):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   228
        return None
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   229
    
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   230
    @classmethod
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   231
    def can_handle(cls, element):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   232
        return False
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   233
    
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   234
    @classmethod
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   235
    def from_xml(cls, element):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   236
        return None
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   237
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   238
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   239
# Public functions for consumers of sysconfig
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   240
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   241
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
   242
    '''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
   243
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   244
    result = []
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   245
    result.append(NetworkTypeScreen(main_win, True))
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   246
    result.append(NICSelect(main_win))
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   247
    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
   248
    _append_nameservice_screens(result, main_win)
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   249
    result.append(TimeZone(main_win, screen=TimeZone.REGIONS))
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   250
    result.append(TimeZone(main_win, screen=TimeZone.LOCATIONS))
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   251
    result.append(TimeZone(main_win))
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   252
    result.append(DateTimeScreen(main_win))
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   253
    result.append(UserScreen(main_win))
1155
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
    return result
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   256
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   257
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   258
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
   259
    '''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
   260
    configuration groups'''
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   261
    
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   262
    result = []
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   263
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   264
    # hostname
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   265
    if configure_group(SC_GROUP_IDENTITY):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   266
        result.append(NetworkTypeScreen(main_win,
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   267
                                        configure_group(SC_GROUP_NETWORK)))
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   268
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   269
    # network
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   270
    if configure_group(SC_GROUP_NETWORK):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   271
        result.append(NICSelect(main_win))
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   272
        result.append(NICConfigure(main_win))
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   273
1164
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   274
    # name services
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   275
    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
   276
        _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
   277
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   278
    # timezone
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   279
    if configure_group(SC_GROUP_LOCATION):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   280
        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
   281
        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
   282
        result.append(TimeZone(main_win))
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   283
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   284
    # date and time
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   285
    if configure_group(SC_GROUP_DATETIME):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   286
        result.append(DateTimeScreen(main_win))
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   287
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   288
    # initial user
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   289
    if configure_group(SC_GROUP_USERS):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   290
        result.append(UserScreen(main_win))
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   291
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   292
    return result
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   293
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   294
1164
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   295
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
   296
    ''' 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
   297
    result.append(NSDNSChooser(main_win))
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
   298
    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
   299
    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
   300
    result.append(NSDNSServer(main_win))
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   301
    result.append(NSDNSSearch(main_win))
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   302
    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
   303
    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
   304
    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
   305
    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
   306
    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
   307
65b1a3a35195 7031613 Enhance system configuration tool adding name services configuration
William Schumann <william.schumann@sun.com>
parents: 1160
diff changeset
   308
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   309
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
   310
    '''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
   311
    Also adds config_profile to InstallEngine.doc.persistent'''
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   312
    eng = InstallEngine.get_instance()
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   313
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   314
    sc_kwargs = {'xslt_file': xslt}
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   315
    sc_args = [sc_profile]
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   316
    eng.register_checkpoint(GENERATE_SC_PROFILE_CHKPOINT,
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   317
                            "solaris_install/manifest/writer",
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   318
                            "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
   319
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1155
diff changeset
   320
    # 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
   321
    # 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
   322
    # 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
   323
    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
   324
    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
   325
    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
   326
        # 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
   327
        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
   328
        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
   329
        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
   330
    else:
6f7e708c38ec 16257 Support for zones configuration and installation should be included in AI
Ethan Quach <Ethan.Quach@sun.com>
parents: 1155
diff changeset
   331
        # 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
   332
        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
   333
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   334
    eng.doc.persistent.insert_children([ConfigProfile()])
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   335
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   336
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   337
def vararg_callback(option, opt_str, value, parser):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   338
    '''Callback function to parse the -g option. Multiple groups are
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   339
    allowed to be specified.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   340
    '''
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   341
    value = list()
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   342
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   343
    def floatable(arg_str):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   344
        '''Checks for a float variable'''
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   345
        try:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   346
            float(arg_str)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   347
            return True
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   348
        except ValueError:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   349
            return False
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   350
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   351
    for arg in parser.rargs:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   352
        if arg[:2] == "--" and len(arg) > 2:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   353
            break
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   354
        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
   355
            break
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   356
        # 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
   357
        # 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
   358
        # more than once. If they have, only keep one.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   359
        if arg.strip(",") not in value:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   360
            value.append(arg.strip(","))
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   361
    del parser.rargs[:len(value)]
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   362
    setattr(parser.values, option.dest, value)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   363
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   364
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   365
def create_config_profiles(sub_cmd, options):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   366
    ''' Create two separate SMF profiles configuring milestone/config and
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   367
    milestone/unconfig services. Place them in /etc/svc/profile/site
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   368
    directory.
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
    # Remove any old profile files.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   371
    if os.path.exists(TMP_CONFIG_PROFILE):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   372
        os.unlink(TMP_CONFIG_PROFILE)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   373
    if os.path.exists(TMP_UNCONFIG_PROFILE):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   374
        os.unlink(TMP_UNCONFIG_PROFILE)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   375
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   376
    # create profile configuring milestone/config service
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   377
    fhdl = open(TMP_CONFIG_PROFILE, "w")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   378
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   379
    # Header and DTD
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   380
    fhdl.writelines("<?xml version='1.0'?>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   381
    fhdl.writelines("<!DOCTYPE service_bundle SYSTEM "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   382
                    "'/usr/share/lib/xml/dtd/service_bundle.dtd.1'>\n")
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
    fhdl.writelines("<service_bundle type=\"profile\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   385
                    "name=\"config_profile\">\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   386
    fhdl.writelines("<service name=\"milestone/config\" version=\"1\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   387
                    "type=\"service\">\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   388
    fhdl.writelines("<instance name=\"default\" enabled=\"true\">\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   389
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   390
    # sysconfig property group
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   391
    fhdl.writelines("<property_group name=\"sysconfig\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   392
                    "type=\"application\">\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   393
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   394
    # interactive_config property
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   395
    # 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
   396
    # Othwerwise set it to false.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   397
    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
   398
        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
   399
                        " value=\"true\"/>\n")
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   400
    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
   401
        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
   402
                        " value=\"false\"/>\n")
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   403
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   404
    # 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
   405
    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
   406
                    " value=\"")
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   407
    for grp in options.grouping:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   408
        fhdl.writelines("%s " % grp)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   409
    fhdl.writelines("\"/>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   410
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   411
    # configure flag
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   412
    # Set to true in reconfiguration scenario, otherwise set to false.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   413
    if sub_cmd == CONFIGURE:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   414
        fhdl.writelines("<propval name=\"configure\" type=\"boolean\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   415
                        "value=\"true\"/>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   416
    else:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   417
        fhdl.writelines("<propval name=\"configure\" type=\"boolean\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   418
                        "value=\"false\"/>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   419
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   420
    fhdl.writelines("</property_group>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   421
    fhdl.writelines("</instance>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   422
    fhdl.writelines("</service>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   423
    fhdl.writelines("</service_bundle>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   424
    fhdl.close()
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   425
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   426
    profile = CONFIG_PROFILE_DEST
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   427
    if options.alt_root:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   428
        profile = options.alt_root + profile
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   429
    # Move file to target destination
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   430
    shutil.move(TMP_CONFIG_PROFILE, profile)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   431
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   432
    # create profile configuring milestone/unconfig milestone
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   433
    fhdl = open(TMP_UNCONFIG_PROFILE, "w")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   434
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   435
    # Header and DTD
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   436
    fhdl.writelines("<?xml version='1.0'?>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   437
    fhdl.writelines("<!DOCTYPE service_bundle SYSTEM "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   438
                    "'/usr/share/lib/xml/dtd/service_bundle.dtd.1'>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   439
    fhdl.writelines("<service_bundle type=\"profile\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   440
                    "name=\"unconfig_profile\">\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   441
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   442
    # unconfig milestone
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   443
    fhdl.writelines("<service name=\"milestone/unconfig\" version=\"1\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   444
                    "type=\"service\">\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   445
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   446
    # configuration property group
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   447
    fhdl.writelines("<property_group name=\"sysconfig\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   448
                    "type=\"application\">\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   449
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   450
    # shutdown property default is false, true if -s was specified.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   451
    if options.shutdown:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   452
        fhdl.writelines("<propval name=\"shutdown\" type=\"boolean\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   453
                        "value=\"true\"/>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   454
    else:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   455
        fhdl.writelines("<propval name=\"shutdown\" type=\"boolean\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   456
                        "value=\"false\"/>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   457
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   458
    # destructive property default is false, true if --destructive
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   459
    # was specified.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   460
    if options.destructive:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   461
        fhdl.writelines("<propval name=\"destructive_unconfig\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   462
                        "type=\"boolean\" value=\"true\"/>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   463
    else:   
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   464
        fhdl.writelines("<propval name=\"destructive_unconfig\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   465
                        "type=\"boolean\" value=\"false\"/>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   466
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   467
    # unconfig_groups from -g option
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   468
    fhdl.writelines("<propval name=\"unconfig_groups\" type=\"astring\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   469
                    "value=\"")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   470
    for grp in options.grouping:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   471
        fhdl.writelines("%s " % grp)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   472
    fhdl.writelines("\"/>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   473
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   474
    # unconfigure flag, always true
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   475
    fhdl.writelines("<propval name=\"unconfigure\" type=\"boolean\" "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   476
                    "value=\"true\"/>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   477
    fhdl.writelines("</property_group>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   478
    fhdl.writelines("</service>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   479
    fhdl.writelines("</service_bundle>\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   480
    fhdl.close()
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   481
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   482
    profile = UNCONFIG_PROFILE_DEST
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   483
    if options.alt_root:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   484
        profile = options.alt_root + profile
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   485
    # Move file to target destination
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   486
    shutil.move(TMP_UNCONFIG_PROFILE, profile)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   487
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   488
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
   489
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
   490
    '''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
   491
        - 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
   492
          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
   493
        - 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
   494
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
        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
   496
    '''
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
    # 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
   498
    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
   499
        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
   500
                 % 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
   501
        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
   502
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
    # 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
   504
    try:
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
        Popen.check_call(["svccfg", "apply", "-n", 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
    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
   507
        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
   508
                 "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
   509
        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
   510
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
    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
   512
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
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   514
def apply_profiles(profile_list):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   515
    '''Apply config profiles to the SMF repository.'''
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   516
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   517
    for profile in profile_list:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   518
        cmd = [SVCCFG, "apply", profile]
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   519
        try:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   520
            Popen.check_call(cmd, stderr=Popen.PIPE,
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   521
                             check_result=(Popen.STDERR_EMPTY, 0))
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   522
        except CalledProcessError as err:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   523
            print err.popen.stderr
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   524
            print _("Unable to apply SMF profile %s." % profile)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   525
            raise
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   526
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
   527
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   528
def valid_group_check(groupings, sub_cmd, parser):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   529
    '''Check to see if the grouping(s) specified are valid.'''
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   530
    if sub_cmd[0] == CREATE_PROFILE:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   531
        '''Check to see if the grouping(s) specified are valid.'''
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   532
        cmd = [SVCCFG, "-s", "milestone/unconfig", "listprop",
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   533
           "sysconfig/valid_groups"]
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   534
        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
   535
            p_ret = Popen.check_call(cmd, stdout=Popen.STORE,
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
   536
                                     stderr=Popen.PIPE,
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
   537
                                     check_result=(Popen.STDERR_EMPTY, 0))
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   538
        except CalledProcessError as err:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   539
            print err.popen.stderr
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   540
            print _("System is not properly configured. You are likely")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   541
            print _("trying to unconfigure or re-configure freshly")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   542
            print _("installed system which is not supported.")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   543
            sys.exit(SU_FATAL_ERR)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   544
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   545
        valid_groupings = p_ret.stdout.split('"')[1].split(' ')
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   546
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   547
        # Check that the grouping specified is valid.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   548
        for grp in groupings:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   549
            if grp not in valid_groupings:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   550
                err = "Grouping must be one of "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   551
                for grping in valid_groupings:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   552
                    err += grping + " "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   553
                parser.error(err)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   554
    else:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   555
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   556
        if len(groupings) > 1:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   557
            parser.error(SUPPORT_ERR)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   558
        if groupings[0] != SYSTEM:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   559
            parser.error(SUPPORT_ERR)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   560
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   561
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   562
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
   563
    '''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
   564
    '''
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   565
    (options, sub_cmd) = parser.parse_args(args)
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   566
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   567
    # 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
   568
    options.grouping = options.grouping.split(',')
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   569
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   570
    # Check that the functional groups requested are valid
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   571
    valid_group_check(options.grouping, sub_cmd, parser)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   572
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   573
    # 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
   574
    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
   575
        options.grouping = SC_ALL_GROUPS
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   576
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   577
    # Run Install Engine in debug mode
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   578
    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
   579
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   580
    log_level = options.log_level.upper()
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   581
    if hasattr(logging, log_level):
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   582
        options.log_level = getattr(logging, log_level.upper())
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   583
    elif log_level == LOG_NAME_INPUT:
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   584
        options.log_level = LOG_LEVEL_INPUT
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   585
    else:
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   586
        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
   587
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   588
    return (options, sub_cmd)
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
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   591
def do_create_profile(options):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   592
    '''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
   593
    System Configuration profile'''
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   594
    try:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   595
        _prepare_engine(options)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   596
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   597
        # insert sysconfig CLI options into DOC
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   598
        doc_options = SysConfigOptions(options)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   599
        doc = InstallEngine.get_instance().doc.persistent
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   600
        doc.insert_children(doc_options)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   601
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   602
        _show_screens(options)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   603
        _exit(options.logname, errcode=0)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   604
    except SystemExit:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   605
        raise
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   606
    except:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   607
        if LOGGER is None:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   608
            # 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
   609
            # dump the traceback
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   610
            raise
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   611
        LOGGER.exception(_("An unhandled exception occurred."))
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   612
        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
   613
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   614
        try:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   615
            doc = InstallEngine.get_instance().doc.persistent
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   616
            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
   617
            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
   618
        except:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   619
            # 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
   620
            pass
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   621
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   622
        print _("An unhandled exception occurred.")
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   623
        if exc_value:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   624
            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
   625
        else:
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   626
            print "\t%s" % exc_type.__name__
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   627
        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
   628
        _exit(options.logname, errcode=1)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   629
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   630
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   631
def do_unconfigure(sub_cmd, options):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   632
    '''Performs the requested unconfigure operations'''
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   633
    try:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   634
        create_config_profiles(sub_cmd, options)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   635
    except IOError:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   636
        print _("IO error creating profile")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   637
        sys.exit(SU_FATAL_ERR)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   638
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   639
    if not options.alt_root:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   640
        try:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   641
            apply_profiles([CONFIG_PROFILE_DEST, UNCONFIG_PROFILE_DEST])
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   642
        except:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   643
            print _("Unable to apply the unconfigure parameters to the image")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   644
            sys.exit(SU_FATAL_ERR)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   645
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   646
        # system-unconfig is an SMF milestone. Bring the
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   647
        # system down to the milestone.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   648
        cmd = [SVCADM, "milestone", "unconfig"]
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   649
        try:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   650
            Popen.check_call(cmd, stderr=Popen.PIPE,
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   651
                check_result=(Popen.STDERR_EMPTY, 0))
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   652
        except CalledProcessError as err:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   653
            print err.popen.stderr
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   654
            print _("Unable to initiate unconfiguration process.")
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
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   658
def parse_unconfig_args(parser, args):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   659
    # Now parse options specific to the subcommand
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   660
    (options, sub_cmd) = parser.parse_args(args)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   661
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   662
    options.alt_root = os.getenv(ALT_ROOT_ENV_VAR)
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
    #
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   665
    # unconfiguration/reconfiguration is not permitted in ROZR non-global 
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   666
    # zone unless such zone is booted in writable mode.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   667
    #
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   668
    rozr_test_binary = '/sbin/sh'
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   669
    if options.alt_root:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   670
        if not os.access(options.alt_root, os.W_OK):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   671
            print _("Root filesystem provided for the non-global zone"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   672
                    " does not exist")
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
        rozr_test_binary = options.alt_root + rozr_test_binary
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   676
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   677
    if not os.access(rozr_test_binary, os.W_OK):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   678
            print _("Root filesystem mounted read-only, '%s' operation"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   679
                     " not permitted." % sub_cmd[0])
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   680
            print _("The likely cause is that sysconfig(1m) was invoked"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   681
                    " in ROZR non-global zone.")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   682
            print _("In that case, see mwac(5) and zonecfg(1m) man pages"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   683
                     " for additional information.")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   684
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   685
            sys.exit(SU_FATAL_ERR)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   686
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   687
    # 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
   688
    # 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
   689
    # use case, let's not explode our test matrix.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   690
    if options.alt_root and options.shutdown:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   691
        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
   692
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   693
    # 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
   694
    # 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
   695
    if not options.grouping:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   696
        if sub_cmd[0] == CONFIGURE:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   697
            print _("This program will re-configure your system.")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   698
        else:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   699
            print _("This program will unconfigure your system.")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   700
            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
   701
            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
   702
                    " or networks.")
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   703
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   704
        confirm = raw_input(_("Do you want to continue (y/[n])? "))
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   705
        if confirm.lower() != "y":
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   706
            sys.exit(SU_OK)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   707
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   708
        # They have confirmed, set grouping to system.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   709
        options.grouping = [SYSTEM]
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   710
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   711
    # Formulate the comma separated string into a list
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   712
    for grp in options.grouping:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   713
        if COMMA in grp:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   714
            options.grouping.extend(map(str.strip, grp.split(",")))
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   715
            options.grouping.remove(grp)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   716
            break
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   717
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   718
    # 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
   719
    # 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
   720
    if len(options.grouping) > 1 and SYSTEM in options.grouping:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   721
        options.grouping = [SYSTEM]
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   722
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   723
    if options.alt_root:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   724
        svccfg_repository = os.path.join(options.alt_root, SMF_REPOSITORY)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   725
        os.environ["SVCCFG_REPOSITORY"] = svccfg_repository
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   726
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   727
    # Check that the functional groups requested are valid
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   728
    valid_group_check(options.grouping, sub_cmd, parser)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   729
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   730
    # 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
   731
    # 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
   732
    # image.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   733
    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
   734
        # Check that there exist unconfigurable services with the specified
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   735
        # grouping on the machine.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   736
        cmd = [SVCPROP, "-p", "unconfigure/exec", "*"]
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   737
        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
   738
                                 check_result=Popen.ANY)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   739
        unconfigurable_svcs = p_ret.stdout.split("\n")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   740
        for opt_grp in options.grouping:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   741
            found = False
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   742
            for svcs in unconfigurable_svcs:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   743
                if svcs:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   744
                    svc = svcs.split("/:properties")[0]
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   745
                    cmd = [SVCPROP, "-p", "sysconfig/group", svc]
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   746
                    p_ret = Popen.check_call(cmd, stdout=Popen.STORE,
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   747
                        stderr=Popen.DEVNULL, check_result=Popen.ANY)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   748
                    grping = p_ret.stdout.strip()
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   749
                    if grping == opt_grp:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   750
                        found = True
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   751
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   752
            if not found:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   753
                print _("There are no services on the system with grouping "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   754
                        "of %s" % opt_grp)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   755
                sys.exit(1)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   756
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
   757
    #
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
   758
    # 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
   759
    # 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
   760
    # (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
   761
    # 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
   762
    # /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
   763
    # 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
   764
    # 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
   765
    # 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
   766
    #
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   767
    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
   768
        # Verify that supplied path (file or directory) exists.
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   769
        if not os.path.exists(options.profile):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   770
            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
   771
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   772
        # Remove all of /etc/svc/profile/sc
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   773
        custom_profile_dir = CUSTOM_PROFILE_DIR
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   774
        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
   775
            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
   776
                                              custom_profile_dir)
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   777
        else:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   778
            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
   779
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   780
        if os.path.exists(custom_profile_dir):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   781
            for root, dirs, files in os.walk(custom_profile_dir):
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   782
                for profile_file in files:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   783
                    os.unlink(os.path.join(root, profile_file))
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   784
        else:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   785
            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
   786
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
   787
        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
   788
            #
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
   789
            # 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
   790
            # 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
   791
            # 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
   792
            # 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
   793
            #
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
   794
            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
   795
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
            # 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
   797
            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
   798
                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
   799
                    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
   800
                    # 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
   801
                    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
   802
                        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
   803
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
   804
                    # Place profile in the temporary site profile area.
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
   805
                    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
   806
                                    os.path.join(custom_profile_dir, 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
   807
                    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
   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
            # 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
   810
            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
   811
                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
   812
                         % 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
   813
                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
   814
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
        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
   816
            # 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
   817
            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
   818
                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
   819
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
            # Place profile in the temporary site profile area.
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
            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
   822
                            os.path.basename(options.profile)))
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   823
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   824
    #
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   825
    # 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
   826
    # (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
   827
    # 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
   828
    # is really what one wants to do.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   829
    #
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   830
    if sub_cmd[0] == CONFIGURE and not options.profile \
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   831
        and not options.alt_root:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   832
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   833
        print _("Interactive configuration requested.")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   834
        print _("System Configuration Interactive (SCI) tool will be" +
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   835
            " launched on console.")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   836
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   837
        cmd = [TTY]
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   838
        try:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   839
            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
   840
                                 check_result=(Popen.STDERR_EMPTY, 0))
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   841
        except CalledProcessError as err:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   842
            print err.popen.stderr
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   843
            # 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
   844
            # In this case, skip the confirmation prompt.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   845
        else:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   846
            terminal_device = p.stdout.strip()
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
            if terminal_device != CONSOLE:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   849
                print _("Since you are currently not logged on console,\n"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   850
                         "you may not be able to navigate SCI tool.")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   851
                confirm = raw_input(_("Would you like to proceed with"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   852
                                      " re-configuration (y/[n])? "))
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   853
                if confirm.lower() != "y":
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   854
                    sys.exit(SU_OK)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   855
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   856
    return (options, sub_cmd)
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   857
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   858
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   859
def _parse_options(arguments):
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   860
    ''' Parses sysconfig subcommands'''
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   861
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   862
    usage = "\t%prog unconfigure [-s] [-g system] " + \
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   863
            "[--destructive]" + \
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   864
            "\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
   865
            "[-c config_profile.xml | dir] [--destructive]" + \
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   866
            "\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
   867
            "[-o output_file] [-l logfile] [-v verbosity] [-b]"
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   868
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   869
    parser = OptionParser(usage=usage)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   870
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   871
    try:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   872
        i = arguments.index(DASH_G)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   873
        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
   874
            if ' ' in arguments[i + 1]:
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   875
                parser.error("groupings must be a comma separated list")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   876
                sys.exit(SU_FATAL_ERR)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   877
        except IndexError:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   878
            # 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
   879
            # index value. The user may have passed in configuration with
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   880
            # no options, which defaults to system
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   881
            pass
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   882
    except ValueError:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   883
        # no -g option found
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   884
        pass
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   885
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   886
    # 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
   887
    # parsing after the subcommand is populated.
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   888
    parser.disable_interspersed_args()
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   889
    (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
   890
    parser.enable_interspersed_args()
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   891
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   892
    if not sub_cmd:
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   893
        parser.error("Subcommand not specified\n"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   894
            "Please select one of the following subcommands: "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   895
            "%s" % SUBCOMMANDS)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   896
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   897
    if sub_cmd[0] == CONFIGURE or sub_cmd[0] == UNCONFIGURE:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   898
        # Set up valid options shared by configure and unconfigure subcommands.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   899
        parser.add_option("-g", dest="grouping", action="callback",
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   900
                          callback=vararg_callback,
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   901
                          help="Grouping to %s" % sub_cmd[0])
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   902
        parser.add_option("-s", action="store_true",
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   903
                          dest="shutdown", default=False,
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   904
                          help="Shuts down the system after the "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   905
                          "unconfiguration")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   906
        parser.add_option("--destructive", dest="destructive",
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   907
                          default=False, action="store_true",
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   908
                          help="Do not preserve system data for a "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   909
                          "group")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   910
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   911
        # configure subcommand additionally supports '-c profile'.
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   912
        if sub_cmd[0] == CONFIGURE:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   913
            parser.add_option("-c", dest="profile",
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   914
                              help="Custom site profile to use")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   915
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   916
        (options, sub_cmd) = parse_unconfig_args(parser, arguments)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   917
    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
   918
        parser.add_option("-g", dest="grouping",
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   919
                          help=_("Grouping to configure"),
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   920
                          default=SC_GROUP_SYSTEM)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   921
        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
   922
                          help=_("Saves created system configuration profile "
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   923
                          "into FILE.\t\t[default: %default]"),
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   924
                          default=DEFAULT_SC_LOCATION)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   925
        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
   926
                          help=_("Set log location to FILE "
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   927
                          "(default: %default)"),
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   928
                          metavar="FILE", default=DEFAULT_LOG_LOCATION)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   929
        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
   930
                          default=DEFAULT_LOG_LEVEL,
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   931
                          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
   932
                          "increasing verbosity, valid values are 'error' "
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   933
                          "'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
   934
                          " %default]"),
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   935
                          choices=["error", "warn", "info", "debug", "input"],
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   936
                          metavar="LEVEL")
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   937
        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
   938
                          dest="force_bw", default=False,
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   939
                          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
   940
                          "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
   941
                          "machines with unsupported frame buffers\n"))
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   942
        (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
   943
    else:
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   944
        parser.error("Invalid subcommand \n"
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   945
            "Please select one of the following subcommands: "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   946
            "%s" % SUBCOMMANDS)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   947
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   948
    return (options, sub_cmd)
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   949
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   950
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   951
def _exit(logname, errcode=0):
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   952
    '''Close out the logger and exit with errcode'''
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   953
    LOGGER.info("**** END ****")
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   954
    # LOGGER.close() # LOGGER.close() is broken - CR 7012566
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   955
    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
   956
            "%s") % logname
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   957
    if isinstance(errcode, unicode):
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   958
        # pylint: disable-msg=E1103
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   959
        errcode = errcode.encode(get_encoding())
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   960
    sys.exit(errcode)
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   961
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   962
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   963
def _make_screen_list(main_win):
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   964
    screens = []
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   965
    screens.append(WelcomeScreen(main_win))
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
   966
    screens.extend(get_screens_from_groups(main_win))
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   967
    screens.append(SummaryScreen(main_win))
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   968
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   969
    return screens
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   970
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   971
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   972
def _show_screens(options):
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   973
    with terminalui as initscr:
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   974
        win_size_y, win_size_x = initscr.getmaxyx()
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   975
        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
   976
            msg = _("     Terminal too small. Min size is 80x24."
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   977
                    " Current size is %(x)ix%(y)i.") % \
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   978
                    {'x': win_size_x, 'y': win_size_y}
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   979
            sys.exit(msg)
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   980
        screen_list = ScreenList()
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   981
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   982
        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
   983
                   Action(curses.KEY_F3, _("Back"),
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   984
                          screen_list.previous_screen),
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   985
                   Action(curses.KEY_F6, _("Help"), screen_list.show_help),
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   986
                   Action(curses.KEY_F9, _("Quit"), screen_list.quit)]
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   987
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   988
        main_win = MainWindow(initscr, screen_list, actions,
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   989
                              force_bw=options.force_bw)
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   990
        screen_list.help = HelpScreen(main_win, _("Help Topics"),
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   991
                                      _("Help Index"),
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   992
                                      _("Select a topic and press Continue."))
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   993
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   994
        win_list = _make_screen_list(main_win)
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   995
        screen_list.help.setup_help_data(win_list)
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   996
        screen_list.screen_list = win_list
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
   997
        screen = screen_list.get_next()
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   998
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
   999
        signal.signal(signal.SIGINT, signal.SIG_IGN)
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1000
        while screen is not None:
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1001
            eng = InstallEngine.get_instance()
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1002
            sc_prof = eng.doc.persistent.get_first_child(name="sysconfig")
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1003
            LOGGER.debug("Sysconfig profile:\n%s", sc_prof)
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1004
            LOGGER.debug("Displaying screen: %s", type(screen))
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1005
            screen = screen.show()
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 _prepare_engine(options):
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1009
    '''Initialize the InstallEngine'''
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
  1010
    InstallEngine(loglevel=options.log_level, debug=options.debug)
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1011
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1012
    logger = logging.getLogger(INSTALL_LOGGER_NAME)
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1013
    logger.addHandler(FileHandler(options.logname, mode='w'))
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1014
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1015
    # 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
  1016
    # 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
  1017
    # 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
  1018
    # dump to stdout
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1019
    global LOGGER
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1020
    LOGGER = logger
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1021
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1022
    terminalui.init_logging(INSTALL_LOGGER_NAME)
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1023
    
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
  1024
    # 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
  1025
    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
  1026
        # 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
  1027
        options.profile = './' + options.profile
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
  1028
    register_checkpoint(sc_profile=options.profile)
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1029
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1030
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1031
def _init_locale():
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
  1032
    '''Initializes the locale'''
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1033
    locale.setlocale(locale.LC_ALL, "")
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1034
    gettext.install("sysconfig", "/usr/share/locale", unicode=True)
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1035
    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
  1036
                             "OR_False: Should wrap text on whitespace in"
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1037
                             " this language"))
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1038
    BaseScreen.set_default_quit_text(_("Confirm: Quit?"),
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1039
                                     _("Do you really want to quit?"),
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1040
                                     _("Cancel"),
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1041
                                     _("Quit"))
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1042
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1043
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1044
def main():
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
  1045
    '''Main Function'''
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1046
    _init_locale()
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
  1047
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1048
    # Check that the command is executed by the root user
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1049
    if os.geteuid() != 0:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1050
        print _("Error: Root privileges are required for "
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1051
               "this command.")
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1052
        sys.exit(SU_FATAL_ERR)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1053
1155
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
  1054
    (options, sub_cmd) = _parse_options(sys.argv[1:])
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1055
1297
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1056
    if sub_cmd[0] == CONFIGURE or sub_cmd[0] == UNCONFIGURE:
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1057
        do_unconfigure(sub_cmd[0], options)
f4b29916f914 7003817 New system unconfiguration
Jan Damborsky <dambi@opensolaris.org>
parents: 1281
diff changeset
  1058
    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
  1059
        do_create_profile(options)
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
  1060
4eb6bb7bb4a0 7032012 Make interactive system configuration scenario zone aware
Jan Damborsky <dambi@opensolaris.org>
parents: 1081
diff changeset
  1061
    sys.exit(SU_OK)
1026
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1062
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1063
if __name__ == '__main__':
91b57d590dfa 6998974 Deliver System Configuration Interactive Tool
Jan Damborsky <dambi@opensolaris.org>
parents:
diff changeset
  1064
    main()