usr/src/cmd/installadm/installadm.py
author Susan Sohn <susan.sohn@oracle.com>
Wed, 01 Aug 2012 13:34:01 -0700
changeset 1760 820b90ac476b
parent 1675 c225c357f3d2
permissions -rw-r--r--
7187126 Creating AI service from pkg(5) results in traceback
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
     1
#!/usr/bin/python2.6
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
     2
#
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
     3
# CDDL HEADER START
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
     4
#
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
     5
# The contents of this file are subject to the terms of the
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
     6
# Common Development and Distribution License (the "License").
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
     7
# You may not use this file except in compliance with the License.
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
     8
#
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
     9
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    10
# or http://www.opensolaris.org/os/licensing.
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    11
# See the License for the specific language governing permissions
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    12
# and limitations under the License.
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    13
#
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    14
# When distributing Covered Code, include this CDDL HEADER in each
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    15
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    16
# If applicable, add the following below this CDDL HEADER, with the
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    17
# fields enclosed by brackets "[]" replaced with your own identifying
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    18
# information: Portions Copyright [yyyy] [name of copyright owner]
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    19
#
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    20
# CDDL HEADER END
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    21
#
1652
15ba29ecb4ed PSARC 2012/139 installadm Execution Profiles
nirmal27<Nirmal.Agarwal@oracle.com>
parents: 1554
diff changeset
    22
# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    23
#
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    24
'''
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    25
installadm - administration of AI services, manifests, and clients
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    26
'''
1760
820b90ac476b 7187126 Creating AI service from pkg(5) results in traceback
Susan Sohn <susan.sohn@oracle.com>
parents: 1675
diff changeset
    27
import gettext
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    28
import logging
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    29
import sys
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    30
import traceback
1087
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
    31
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
    32
import osol_install.auto_install.ai_smf_service as aismf
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
    33
import osol_install.auto_install.service_config as config
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
    34
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    35
from optparse import OptionParser, SUPPRESS_HELP
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    36
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    37
from osol_install.auto_install import create_client
1075
df96871c232d 16045 SC manifest should not be required to be in an XML comment when using embedded form
William Schumann <william.schumann@sun.com>
parents: 1060
diff changeset
    38
from osol_install.auto_install import create_profile
1023
67ab1aaf8229 7020631 Convert create-service.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents: 1008
diff changeset
    39
from osol_install.auto_install import create_service
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    40
from osol_install.auto_install import delete_client
1087
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
    41
from osol_install.auto_install import delete_manifest
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
    42
from osol_install.auto_install import delete_profile
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
    43
from osol_install.auto_install import delete_service
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
    44
from osol_install.auto_install import export
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
    45
from osol_install.auto_install import list as ai_list
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    46
from osol_install.auto_install import publish_manifest
1309
a58fac510fb6 7047801 Derived Manifests Module should remove script restrictions of only ksh93 or python
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1285
diff changeset
    47
from osol_install.auto_install import rename_service
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    48
from osol_install.auto_install import set_criteria
1087
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
    49
from osol_install.auto_install import set_service
1675
c225c357f3d2 PSARC/2012/142 installadm update-service
Susan Sohn <susan.sohn@oracle.com>
parents: 1652
diff changeset
    50
from osol_install.auto_install import update_service
1075
df96871c232d 16045 SC manifest should not be required to be in an XML comment when using embedded form
William Schumann <william.schumann@sun.com>
parents: 1060
diff changeset
    51
from osol_install.auto_install import validate_profile
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
    52
from osol_install.auto_install.installadm_common import _, \
1285
ad387de1635f 7059977 some installadm output needs better formatting
Jesse Butler <jesse.butler@oracle.com>
parents: 1221
diff changeset
    53
    CHECK_SETUP_SCRIPT, validate_service_name, XDEBUG, setup_logging, \
ad387de1635f 7059977 some installadm output needs better formatting
Jesse Butler <jesse.butler@oracle.com>
parents: 1221
diff changeset
    54
    cli_wrap as cw
1358
6016d5e46a08 7066078 installadm should be able to create a service from a package
Susan Sohn <susan.sohn@oracle.com>
parents: 1309
diff changeset
    55
from osol_install.auto_install.image import ImageError
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
    56
from osol_install.auto_install.service import AIService, MountError, \
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
    57
    VersionError, InvalidServiceError
1652
15ba29ecb4ed PSARC 2012/139 installadm Execution Profiles
nirmal27<Nirmal.Agarwal@oracle.com>
parents: 1554
diff changeset
    58
from solaris_install import Popen, CalledProcessError, check_auth_and_euid, \
15ba29ecb4ed PSARC 2012/139 installadm Execution Profiles
nirmal27<Nirmal.Agarwal@oracle.com>
parents: 1554
diff changeset
    59
    SERVICE_AUTH, UnauthorizedUserError
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    60
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
    61
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
    62
DEFAULT_LOG_LEVEL = logging.WARN
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
    63
DEBUG_LOG_LEVEL = logging.DEBUG
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    64
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    65
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    66
def get_enable_usage():
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    67
    ''' get usage for enable'''
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    68
    usage = _('enable\t<svcname>')
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    69
    return(usage)
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    70
1023
67ab1aaf8229 7020631 Convert create-service.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents: 1008
diff changeset
    71
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    72
def get_disable_usage():
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    73
    ''' get usage for disable'''
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
    74
    usage = _('disable\t<svcname>')
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    75
    return(usage)
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    76
1023
67ab1aaf8229 7020631 Convert create-service.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents: 1008
diff changeset
    77
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    78
def get_help_usage():
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    79
    ''' get usage for help'''
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    80
    usage = _('help\t[<subcommand>]')
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    81
    return(usage)
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    82
1023
67ab1aaf8229 7020631 Convert create-service.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents: 1008
diff changeset
    83
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    84
def do_enable_service(cmd_options=None):
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    85
    ''' Enable a service
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    86
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    87
    Parse the supplied arguments then enable the specified service.
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    88
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    89
    Input:
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    90
        List of command line options
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    91
    Return:
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    92
        None
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    93
    Raises:
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    94
        SystemExit if missing permissions, invalid service name, or
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    95
        if attempt to enable the service or the smf service fails.
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    96
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    97
    '''
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
    98
    logging.log(XDEBUG, '**** START do_enable_service ****')
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
    99
1652
15ba29ecb4ed PSARC 2012/139 installadm Execution Profiles
nirmal27<Nirmal.Agarwal@oracle.com>
parents: 1554
diff changeset
   100
    # check for authorization and euid
15ba29ecb4ed PSARC 2012/139 installadm Execution Profiles
nirmal27<Nirmal.Agarwal@oracle.com>
parents: 1554
diff changeset
   101
    try:
15ba29ecb4ed PSARC 2012/139 installadm Execution Profiles
nirmal27<Nirmal.Agarwal@oracle.com>
parents: 1554
diff changeset
   102
        check_auth_and_euid(SERVICE_AUTH)
15ba29ecb4ed PSARC 2012/139 installadm Execution Profiles
nirmal27<Nirmal.Agarwal@oracle.com>
parents: 1554
diff changeset
   103
    except UnauthorizedUserError as err:
15ba29ecb4ed PSARC 2012/139 installadm Execution Profiles
nirmal27<Nirmal.Agarwal@oracle.com>
parents: 1554
diff changeset
   104
        raise SystemExit(err)
15ba29ecb4ed PSARC 2012/139 installadm Execution Profiles
nirmal27<Nirmal.Agarwal@oracle.com>
parents: 1554
diff changeset
   105
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   106
    usage = '\n' + get_enable_usage()
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   107
    parser = OptionParser(usage=usage)
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   108
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   109
    args = parser.parse_args(cmd_options)[1]
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   110
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   111
    # Check for correct number of args
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   112
    if len(args) != 1:
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   113
        if len(args) == 0:
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   114
            parser.error(_("Missing required argument, <svcname>"))
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   115
        else:
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   116
            parser.error(_("Too many arguments: %s") % args)
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   117
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   118
    svcname = args[0]
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   119
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   120
    if not config.is_service(svcname):
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   121
        err_msg = _("The service does not exist: %s\n") % svcname
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   122
        parser.error(err_msg)
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   123
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   124
    # Verify that the server settings are not obviously broken.
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   125
    # These checks cannot be complete, but do check for things
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   126
    # which will definitely cause failure.
1008
adc3f01db0d7 7019438 Remove run_script from installadm
Sue Sohn <Susan.Sohn@Oracle.COM>
parents: 1005
diff changeset
   127
    ret = Popen([CHECK_SETUP_SCRIPT]).wait()
adc3f01db0d7 7019438 Remove run_script from installadm
Sue Sohn <Susan.Sohn@Oracle.COM>
parents: 1005
diff changeset
   128
    if ret:
adc3f01db0d7 7019438 Remove run_script from installadm
Sue Sohn <Susan.Sohn@Oracle.COM>
parents: 1005
diff changeset
   129
        return 1
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   130
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   131
    logging.log(XDEBUG, 'Enabling install service %s', svcname)
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   132
    try:
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   133
        service = AIService(svcname)
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   134
        service.enable()
1358
6016d5e46a08 7066078 installadm should be able to create a service from a package
Susan Sohn <susan.sohn@oracle.com>
parents: 1309
diff changeset
   135
    except (aismf.ServicesError, config.ServiceCfgError, ImageError,
6016d5e46a08 7066078 installadm should be able to create a service from a package
Susan Sohn <susan.sohn@oracle.com>
parents: 1309
diff changeset
   136
            MountError) as err:
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   137
        raise SystemExit(err)
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   138
    except InvalidServiceError as err:
1285
ad387de1635f 7059977 some installadm output needs better formatting
Jesse Butler <jesse.butler@oracle.com>
parents: 1221
diff changeset
   139
        raise SystemExit(cw(_("\nThis service may not be enabled until all "
ad387de1635f 7059977 some installadm output needs better formatting
Jesse Butler <jesse.butler@oracle.com>
parents: 1221
diff changeset
   140
                              "invalid manifests and profiles have been "
ad387de1635f 7059977 some installadm output needs better formatting
Jesse Butler <jesse.butler@oracle.com>
parents: 1221
diff changeset
   141
                              "corrected or removed.\n")))
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   142
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   143
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   144
def do_disable_service(cmd_options=None):
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   145
    ''' Disable a service
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   146
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   147
    Disable the specified service and optionally update the service's
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   148
    properties to reflect the new status.
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   149
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   150
    Input:
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   151
        List of command line options
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   152
    Return:
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   153
        None
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   154
    Raises:
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   155
        SystemExit if missing permissions, invalid service name, or
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   156
        if attempt to place smf service in maintenance fails.
1309
a58fac510fb6 7047801 Derived Manifests Module should remove script restrictions of only ksh93 or python
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1285
diff changeset
   157
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   158
    '''
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   159
    logging.debug('**** START do_disable_service ****')
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   160
1652
15ba29ecb4ed PSARC 2012/139 installadm Execution Profiles
nirmal27<Nirmal.Agarwal@oracle.com>
parents: 1554
diff changeset
   161
    # check for authorization and euid
15ba29ecb4ed PSARC 2012/139 installadm Execution Profiles
nirmal27<Nirmal.Agarwal@oracle.com>
parents: 1554
diff changeset
   162
    try:
15ba29ecb4ed PSARC 2012/139 installadm Execution Profiles
nirmal27<Nirmal.Agarwal@oracle.com>
parents: 1554
diff changeset
   163
        check_auth_and_euid(SERVICE_AUTH)
15ba29ecb4ed PSARC 2012/139 installadm Execution Profiles
nirmal27<Nirmal.Agarwal@oracle.com>
parents: 1554
diff changeset
   164
    except UnauthorizedUserError as err:
15ba29ecb4ed PSARC 2012/139 installadm Execution Profiles
nirmal27<Nirmal.Agarwal@oracle.com>
parents: 1554
diff changeset
   165
        raise SystemExit(err)
15ba29ecb4ed PSARC 2012/139 installadm Execution Profiles
nirmal27<Nirmal.Agarwal@oracle.com>
parents: 1554
diff changeset
   166
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   167
    usage = '\n' + get_disable_usage()
1087
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
   168
    parser = OptionParser(usage=usage)
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   169
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   170
    (options, args) = parser.parse_args(cmd_options)
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   171
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   172
    # Check for correct number of args
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   173
    if len(args) != 1:
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   174
        if len(args) == 0:
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   175
            parser.error(_("Missing required argument, <svcname>"))
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   176
        else:
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   177
            parser.error(_("Too many arguments: %s") % args)
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   178
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   179
    svcname = args[0]
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   180
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   181
    # validate service name
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   182
    try:
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   183
        validate_service_name(svcname)
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   184
    except ValueError as err:
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   185
        raise SystemExit(err)
1309
a58fac510fb6 7047801 Derived Manifests Module should remove script restrictions of only ksh93 or python
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1285
diff changeset
   186
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   187
    if not config.is_service(svcname):
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   188
        err_msg = _("The service does not exist: %s\n") % svcname
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   189
        parser.error(err_msg)
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   190
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   191
    prop_data = config.get_service_props(svcname)
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   192
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   193
    if prop_data and config.PROP_STATUS not in prop_data:
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   194
        err_msg = _("The property, status, is missing for %s.\n") % svcname
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   195
        parser.error(err_msg)
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   196
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   197
    if prop_data[config.PROP_STATUS] == config.STATUS_OFF:
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   198
        err_msg = _("The service is not running: %s\n") % svcname
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   199
        parser.error(err_msg)
1309
a58fac510fb6 7047801 Derived Manifests Module should remove script restrictions of only ksh93 or python
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1285
diff changeset
   200
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   201
    try:
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   202
        logging.debug("Disabling install service %s", svcname)
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   203
        service = AIService(svcname)
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   204
        service.disable(force=True)
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   205
    except (config.ServiceCfgError, aismf.ServicesError, MountError) as err:
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   206
        raise SystemExit(err)
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   207
    except CalledProcessError:
1008
adc3f01db0d7 7019438 Remove run_script from installadm
Sue Sohn <Susan.Sohn@Oracle.COM>
parents: 1005
diff changeset
   208
        return 1
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   209
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   210
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   211
def main():
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   212
    ''' installadm main
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   213
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   214
    Parse the command line arguments and invoke sub-command.
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   215
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   216
    Returns:
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   217
        The return from the invoked sub-command.
1760
820b90ac476b 7187126 Creating AI service from pkg(5) results in traceback
Susan Sohn <susan.sohn@oracle.com>
parents: 1675
diff changeset
   218
        3 if VersionError encountered
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   219
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   220
    '''
1760
820b90ac476b 7187126 Creating AI service from pkg(5) results in traceback
Susan Sohn <susan.sohn@oracle.com>
parents: 1675
diff changeset
   221
    gettext.install('solaris_install_installadm', '/usr/share/locale')
820b90ac476b 7187126 Creating AI service from pkg(5) results in traceback
Susan Sohn <susan.sohn@oracle.com>
parents: 1675
diff changeset
   222
1087
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
   223
    # sub_cmds is a dictionary. The value for each subcommand key
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
   224
    # is a tuple consisting of the method to call to invoke the
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
   225
    # subcommand and the method to call to get usage for the subcommand.
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   226
    sub_cmds = {
1087
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
   227
        'create-service':    (create_service.do_create_service,
1023
67ab1aaf8229 7020631 Convert create-service.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents: 1008
diff changeset
   228
                              create_service.get_usage()),
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   229
        'delete-service':    (delete_service.do_delete_service,
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   230
                              delete_service.get_usage()),
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   231
        'rename-service':    (rename_service.do_rename_service,
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   232
                              rename_service.get_usage()),
1087
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
   233
        'set-service':       (set_service.do_set_service,
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
   234
                              set_service.get_usage()),
1675
c225c357f3d2 PSARC/2012/142 installadm update-service
Susan Sohn <susan.sohn@oracle.com>
parents: 1652
diff changeset
   235
        'update-service':    (update_service.do_update_service,
c225c357f3d2 PSARC/2012/142 installadm update-service
Susan Sohn <susan.sohn@oracle.com>
parents: 1652
diff changeset
   236
                              update_service.get_usage()),
1087
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
   237
        'list':              (ai_list.do_list,
1023
67ab1aaf8229 7020631 Convert create-service.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents: 1008
diff changeset
   238
                              ai_list.get_usage()),
1087
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
   239
        'enable':            (do_enable_service,
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   240
                              get_enable_usage()),
1087
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
   241
        'disable':           (do_disable_service,
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   242
                              get_disable_usage()),
1087
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
   243
        'create-client':     (create_client.do_create_client,
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   244
                              create_client.get_usage()),
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   245
        'create-profile':    (create_profile.do_create_profile,
1551
118819d9b0f4 7041537 It will be nice to have an installadm update-profile command
nirmal27<Nirmal.Agarwal@oracle.com>
parents: 1358
diff changeset
   246
                              create_profile.get_create_usage()),
118819d9b0f4 7041537 It will be nice to have an installadm update-profile command
nirmal27<Nirmal.Agarwal@oracle.com>
parents: 1358
diff changeset
   247
        'update-profile':    (create_profile.do_update_profile,
118819d9b0f4 7041537 It will be nice to have an installadm update-profile command
nirmal27<Nirmal.Agarwal@oracle.com>
parents: 1358
diff changeset
   248
                              create_profile.get_update_usage()),
1087
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
   249
        'delete-client':     (delete_client.do_delete_client,
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
   250
                              delete_client.get_usage()),
1309
a58fac510fb6 7047801 Derived Manifests Module should remove script restrictions of only ksh93 or python
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1285
diff changeset
   251
        'create-manifest':   (publish_manifest.do_publish_manifest,
a58fac510fb6 7047801 Derived Manifests Module should remove script restrictions of only ksh93 or python
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1285
diff changeset
   252
                              publish_manifest.get_create_usage()),
a58fac510fb6 7047801 Derived Manifests Module should remove script restrictions of only ksh93 or python
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1285
diff changeset
   253
        'add-manifest':      (publish_manifest.do_publish_manifest,  # alias
a58fac510fb6 7047801 Derived Manifests Module should remove script restrictions of only ksh93 or python
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1285
diff changeset
   254
                              publish_manifest.get_create_usage()),
1087
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
   255
        'update-manifest':   (publish_manifest.do_update_manifest,
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
   256
                              publish_manifest.get_update_usage()),
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
   257
        'delete-manifest':   (delete_manifest.do_delete_manifest,
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
   258
                              delete_manifest.get_usage()),
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   259
        'delete-profile':    (delete_profile.do_delete_profile,
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   260
                              delete_profile.get_usage()),
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   261
        'export':            (export.do_export,
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   262
                              export.get_usage()),
1087
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
   263
        'remove':            (delete_manifest.do_delete_manifest,  # alias
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
   264
                              delete_manifest.get_usage()),
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
   265
        'set-criteria':      (set_criteria.do_set_criteria,
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   266
                              set_criteria.get_usage()),
1087
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
   267
        'validate':          (validate_profile.do_validate_profile,
1075
df96871c232d 16045 SC manifest should not be required to be in an XML comment when using embedded form
William Schumann <william.schumann@sun.com>
parents: 1060
diff changeset
   268
                              validate_profile.get_usage()),
1087
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
   269
        'help':              (None, get_help_usage())
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   270
        }
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   271
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   272
    # cmds is a list of subcommands used to dictate the order of
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   273
    # the commands listed in the usage output
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   274
    cmds = ["create-service",
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   275
            "delete-service",
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   276
            "rename-service",
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   277
            "set-service",
1675
c225c357f3d2 PSARC/2012/142 installadm update-service
Susan Sohn <susan.sohn@oracle.com>
parents: 1652
diff changeset
   278
            "update-service",
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   279
            "list",
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   280
            "enable",
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   281
            "disable",
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   282
            "create-client",
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   283
            "delete-client",
1309
a58fac510fb6 7047801 Derived Manifests Module should remove script restrictions of only ksh93 or python
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1285
diff changeset
   284
            "create-manifest",
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   285
            "update-manifest",
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   286
            "delete-manifest",
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   287
            "create-profile",
1551
118819d9b0f4 7041537 It will be nice to have an installadm update-profile command
nirmal27<Nirmal.Agarwal@oracle.com>
parents: 1358
diff changeset
   288
            "update-profile",
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   289
            "delete-profile",
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   290
            "export",
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   291
            "validate",
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   292
            "set-criteria",
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   293
            "help",
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   294
            ]
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   295
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   296
    usage_str = "Usage: installadm [options] <subcommand> <args> ..."
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   297
    for entry in cmds:
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   298
        usage_str += '\n' + sub_cmds[entry][1]
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   299
    parser = OptionParser(usage=usage_str)
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   300
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   301
    # add private debug option, which provides console output that might
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   302
    # be useful during development or bug fixing.
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   303
    parser.add_option("-d", "--debug", action="count", dest="debug",
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   304
                      default=0, help=SUPPRESS_HELP)
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   305
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   306
    # Find subcommand in sys.argv and save index to know which
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   307
    # options/args to pass to installadm and which options to
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   308
    # pass to subcommand
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   309
    sub_cmd = None
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   310
    index = 0
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   311
    for index, arg in enumerate(sys.argv):
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   312
        if arg in sub_cmds:
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   313
            sub_cmd = arg
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   314
            break
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   315
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   316
    # Exit if no subcommand was provided.
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   317
    if not sub_cmd:
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   318
        parser.print_help(file=sys.stderr)
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   319
        sys.exit(2)
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   320
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   321
    # Pass arguments up to subcommand to installadm parser
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   322
    # The rest of the arguments will be passed to the
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   323
    # subcommand later.
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   324
    #
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   325
    (options, args) = parser.parse_args(sys.argv[1:index])
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   326
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   327
    if args:
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   328
        parser.error(_("Unexpected argument(s): %s" % args))
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   329
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   330
    # Set up logging to the specified level of detail
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   331
    if options.debug == 0:
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   332
        options.log_level = DEFAULT_LOG_LEVEL
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   333
    elif options.debug == 1:
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   334
        options.log_level = DEBUG_LOG_LEVEL
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   335
    elif options.debug >= 2:
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   336
        options.log_level = XDEBUG
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   337
    try:
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   338
        setup_logging(options.log_level)
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   339
    except IOError, err:
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   340
        parser.error("%s '%s'" % (err.strerror, err.filename))
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   341
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   342
    logging.debug("installadm options: verbosity = %s", options.log_level)
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   343
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   344
    if sub_cmd == 'help':
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   345
        if len(sys.argv[index:]) == 1:
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   346
            # print full usage
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   347
            parser.print_help()
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   348
        else:
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   349
            # print help for single subcommand
1087
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
   350
            subcmd = sys.argv[index + 1]
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   351
            if subcmd in sub_cmds:
1087
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
   352
                print(sub_cmds.get(sys.argv[index + 1], None)[1])
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   353
            else:
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   354
                parser.print_help()
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   355
        sys.exit()
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   356
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   357
    else:
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   358
        # make sure we have the installadm smf service
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   359
        try:
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   360
            aismf.get_smf_instance()
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   361
        except aismf.ServicesError as err:
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   362
            raise SystemExit(err)
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   363
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   364
        # Invoke the function which implements the specified subcommand
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   365
        func = sub_cmds[sub_cmd][0]
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   366
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   367
        logging.debug("Invoking subcommand: %s %s",
1087
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
   368
                      func.func_name, sys.argv[index + 1:])
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   369
        try:
1087
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1075
diff changeset
   370
            return func(sys.argv[index + 1:])
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   371
        except VersionError as err:
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   372
            print >> sys.stderr, err
1675
c225c357f3d2 PSARC/2012/142 installadm update-service
Susan Sohn <susan.sohn@oracle.com>
parents: 1652
diff changeset
   373
            return 3
1221
31c6d2de5731 7042146 Implement ISIM project
Susan Sohn <susan.sohn@oracle.com>
parents: 1087
diff changeset
   374
        except Exception:
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   375
            sys.stderr.write(_("%s:\n"
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   376
                               "\tUnhandled error encountered:\n") % sub_cmd)
1023
67ab1aaf8229 7020631 Convert create-service.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents: 1008
diff changeset
   377
            traceback.print_exc(file=sys.stderr)
1060
d69c8ea4ed30 7034887 When installadm tracebacks, its return code is 0
Sue Sohn <Susan.Sohn@Oracle.COM>
parents: 1023
diff changeset
   378
            return 1
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   379
1023
67ab1aaf8229 7020631 Convert create-service.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents: 1008
diff changeset
   380
1005
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   381
if __name__ == '__main__':
4a59a181decd 7015429 Convert installadm.c to python
Sue Sohn <Susan.Sohn@Oracle.COM>
parents:
diff changeset
   382
    sys.exit(main())