annotate usr/src/cmd/beadm/beadm.py @ 13025:3c7681e3e323

PSARC 2010/059 SNAP BE Management 6964804 SNAP BE management into ON 6971379 libbe should capture and give useful error when installgrub or ict.py fails. 6971390 beadm does not support labeled brand zones 6971394 BEADM_ERR_BE_DOES_NOT_EXIST has an extra space 6971397 libbe error messages need internationalization 6971402 Remove be_get_last_zone_be_callback 6971409 be_create_menu returns errors from both be_errno_t and errno sets
author Glenn Lagasse <glenn.lagasse@oracle.com>
date Wed, 04 Aug 2010 12:28:19 -0700
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13025
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1 #!/usr/bin/python2.6
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
2 #
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
3 # CDDL HEADER START
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
4 #
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
5 # The contents of this file are subject to the terms of the
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
6 # Common Development and Distribution License (the "License").
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
7 # You may not use this file except in compliance with the License.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
8 #
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
9 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
10 # or http://www.opensolaris.org/os/licensing.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
11 # See the License for the specific language governing permissions
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
12 # and limitations under the License.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
13 #
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
14 # When distributing Covered Code, include this CDDL HEADER in each
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
15 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
16 # If applicable, add the following below this CDDL HEADER, with the
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
17 # fields enclosed by brackets "[]" replaced with your own identifying
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
18 # information: Portions Copyright [yyyy] [name of copyright owner]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
19 #
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
20 # CDDL HEADER END
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
21 #
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
22
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
23 #
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
24 # Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
25 #
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
26
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
27 """
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
28 beadm - The Boot Environment Administration tool. Use this CLI to
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
29 manage boot environments.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
30 """
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
31
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
32 import getopt
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
33 import gettext
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
34 import os
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
35 import sys
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
36 import shutil
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
37 import traceback
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
38 import time
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
39 import subprocess
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
40
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
41 from beadm import _
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
42 from beadm.BootEnvironment import *
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
43 import beadm.messages as msg
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
44 import libbe_py as lb
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
45
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
46 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
47 def usage():
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
48 '''Defines parameters and options of the command beadm.'''
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
49 print >> sys.stderr, _("""
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
50 Usage:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
51 beadm subcommand cmd_options
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
52
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
53 subcommands:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
54
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
55 beadm activate beName
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
56 beadm create [-a] [-d description]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
57 [-e non-activeBeName | beName@snapshot]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
58 [-o property=value] ... [-p zpool] beName
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
59 beadm create beName@snapshot
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
60 beadm destroy [-fF] beName | beName@snapshot
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
61 beadm list [[-a] | [-d] [-s]] [-H] [beName]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
62 beadm mount beName mountpoint
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
63 beadm rename beName newBeName
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
64 beadm unmount [-f] beName""")
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
65 sys.exit(1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
66
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
67
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
68 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
69 # Public Command Line functions described in beadm(1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
70 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
71
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
72 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
73 def activate(opts):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
74 """
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
75 Function: activate
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
76
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
77 Description: Activate a Boot Environment.The following is the
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
78 subcommand, options and args that make up the
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
79 opts object passed in:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
80
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
81 Parameters:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
82 opts - A string containing the active subcommand
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
83
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
84 Returns:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
85 0 - Success
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
86 1 - Failure
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
87 """
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
88
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
89 if len(opts) != 1:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
90 msg.printMsg(msg.Msgs.BEADM_ERR_OPT_ARGS, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
91 usage()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
92
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
93 be = BootEnvironment()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
94
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
95 if lb.beVerifyBEName(opts[0]) != 0:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
96 msg.printMsg(msg.Msgs.BEADM_ERR_BENAME, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
97 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
98
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
99 rc = lb.beActivate(opts[0])
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
100 if rc == 0:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
101 return 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
102
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
103 be.msg_buf["0"] = opts[0]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
104 if rc == msg.Msgs.BE_ERR_BE_NOENT:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
105 be.msg_buf["1"] = \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
106 msg.getMsg(msg.Msgs.BEADM_ERR_BE_DOES_NOT_EXIST, opts[0])
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
107 elif rc == msg.Msgs.BE_ERR_PERM or rc == msg.Msgs.BE_ERR_ACCESS:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
108 be.msg_buf["1"] = msg.getMsg(msg.Msgs.BEADM_ERR_PERMISSIONS, rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
109 msg.printMsg(msg.Msgs.BEADM_ERR_ACTIVATE, be.msg_buf, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
110 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
111 else:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
112 be.msg_buf["1"] = lb.beGetErrDesc(rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
113 if be.msg_buf["1"] == None:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
114 be.msg_buf["1"] = \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
115 msg.getMsg(msg.Msgs.BEADM_ERR_NO_MSG, rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
116
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
117 msg.printMsg(msg.Msgs.BEADM_ERR_ACTIVATE, be.msg_buf, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
118 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
119
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
120
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
121 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
122 def create(opts):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
123 """
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
124 Function: create
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
125
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
126 Description: Create a Boot Environment. The following is the
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
127 subcommand, options and args that make up the
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
128 opts object passed in:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
129
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
130 create [-a] [-d description]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
131 [-e non-activeBeName | beName@Snapshot]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
132 [-o property=value] ... [-p zpool] beName
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
133
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
134 create beName@Snapshot
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
135
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
136 Parameters:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
137 opts - A object containing the create subcommand
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
138 and all the options and arguments passed in
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
139 on the command line mentioned above.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
140
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
141 Returns:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
142 0 - Success
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
143 1 - Failure
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
144 """
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
145
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
146 be = BootEnvironment()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
147
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
148 activate = False
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
149
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
150 try:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
151 opts_args, be.trgt_be_name_or_snapshot = getopt.getopt(opts,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
152 "ad:e:o:p:")
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
153 except getopt.GetoptError:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
154 msg.printMsg(msg.Msgs.BEADM_ERR_OPT_ARGS, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
155 usage()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
156
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
157 # Counters for detecting multiple options.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
158 # e.g. beadm create -p rpool -p rpool2 newbe
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
159 num_a_opts = 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
160 num_e_opts = 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
161 num_p_opts = 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
162 num_d_opts = 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
163
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
164 for opt, arg in opts_args:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
165 if opt == "-a":
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
166 activate = True
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
167 num_a_opts += 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
168 elif opt == "-e":
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
169 be.src_be_name_or_snapshot = arg
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
170 num_e_opts += 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
171 elif opt == "-o":
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
172 key, value = arg.split("=")
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
173 be.properties[key] = value
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
174 elif opt == "-p":
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
175 be.trgt_rpool = arg
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
176 num_p_opts += 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
177 elif opt == "-d":
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
178 be.description = arg
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
179 num_d_opts += 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
180
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
181 if num_a_opts > 1 or num_e_opts > 1 or num_p_opts > 1 or num_d_opts > 1:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
182 msg.printMsg(msg.Msgs.BEADM_ERR_OPT_ARGS, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
183 usage()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
184
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
185 # Check that all info provided from the user is legitimate.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
186 if (verifyCreateOptionsArgs(be) != 0):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
187 usage()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
188
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
189 if initBELog("create", be) != 0:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
190 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
191
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
192 msg.printMsg(msg.Msgs.BEADM_MSG_BE_CREATE_START,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
193 be.trgt_be_name_or_snapshot[0], be.log_id)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
194
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
195 if '@' in be.trgt_be_name_or_snapshot[0]:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
196 # Create a snapshot
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
197 rc = createSnapshot(be)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
198 else:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
199 if lb.beVerifyBEName(be.trgt_be_name_or_snapshot[0]) != 0:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
200 msg.printMsg(msg.Msgs.BEADM_ERR_BENAME, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
201 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
202
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
203 # Create a BE based on a snapshot
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
204 if be.src_be_name_or_snapshot is not None and \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
205 '@' in be.src_be_name_or_snapshot:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
206 # Create a BE from a snapshot
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
207 rc = createBEFromSnapshot(be)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
208 else:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
209 rc = createBE(be)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
210
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
211 # Activate the BE if the user chose to.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
212 if activate and rc == 0:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
213 rc = activateBE(be)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
214 cleanupBELog(be)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
215
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
216 return rc
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
217
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
218 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
219 def destroy(opts):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
220 """
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
221 Function: destroy
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
222
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
223 Description: Destroy a Boot Environment. The following is the
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
224 subcommand, options and args that make up the
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
225 opts object passed in:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
226
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
227 destroy [-fF] beName | beName@snapshot
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
228
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
229 Parameters:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
230 opts - A object containing the destroy subcommand
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
231 and all the options and arguments passed in
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
232 on the command line mentioned above.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
233
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
234 Returns:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
235 0 - Success
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
236 1 - Failure
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
237 """
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
238
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
239 force_unmount = 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
240 suppress_prompt = False
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
241 be_active_on_boot = None
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
242 be = BootEnvironment()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
243
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
244 try:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
245 opts_args, be.trgt_be_name_or_snapshot = getopt.getopt(opts, "fF")
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
246 except getopt.GetoptError:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
247 msg.printMsg(msg.Msgs.BEADM_ERR_OPT_ARGS, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
248 usage()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
249
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
250 # Counters for detecting multiple options.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
251 # e.g. beadm destroy -f -f newbe
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
252 num_f_opts = 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
253 num_sf_opts = 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
254
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
255 for opt, arg in opts_args:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
256 if opt == "-f":
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
257 force_unmount = 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
258 num_sf_opts += 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
259 elif opt == "-F":
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
260 suppress_prompt = True
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
261 num_f_opts += 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
262
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
263 if num_sf_opts > 1 or num_f_opts > 1:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
264 msg.printMsg(msg.Msgs.BEADM_ERR_OPT_ARGS, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
265 usage()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
266
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
267 if len(be.trgt_be_name_or_snapshot) != 1:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
268 msg.printMsg(msg.Msgs.BEADM_ERR_OPT_ARGS, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
269 usage()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
270
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
271 is_snapshot = False
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
272
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
273 if "@" in be.trgt_be_name_or_snapshot[0]:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
274 is_snapshot = True
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
275 be_name, snap_name = be.trgt_be_name_or_snapshot[0].split("@")
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
276 if lb.beVerifyBEName(be_name) != 0:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
277 msg.printMsg(msg.Msgs.BEADM_ERR_BENAME, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
278 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
279 else:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
280 if lb.beVerifyBEName(be.trgt_be_name_or_snapshot[0]) != 0:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
281 msg.printMsg(msg.Msgs.BEADM_ERR_BENAME, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
282 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
283
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
284 # Get the 'active' BE and the 'active on boot' BE.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
285 be_active, be_active_on_boot = getActiveBEAndActiveOnBootBE()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
286
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
287 # If the user is trying to destroy the 'active' BE then quit now.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
288 if not is_snapshot and be_active == be.trgt_be_name_or_snapshot[0]:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
289 be.msg_buf["0"] = be.msg_buf["1"] = be_active
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
290 msg.printMsg(msg.Msgs.BEADM_ERR_DESTROY_ACTIVE, be.msg_buf, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
291 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
292
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
293 if not suppress_prompt:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
294
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
295 # Display a destruction question and wait for user response.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
296 # Quit if negative user response.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
297
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
298 if not displayDestructionQuestion(be):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
299 return 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
300
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
301 if is_snapshot:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
302
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
303 # Destroy a snapshot.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
304 rc = lb.beDestroySnapshot(be_name, snap_name)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
305 else:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
306
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
307 # Destroy a BE. Passing in 1 for the second arg destroys
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
308 # any snapshots the BE may have as well.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
309
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
310 rc = lb.beDestroy(be.trgt_be_name_or_snapshot[0], 1, force_unmount)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
311
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
312 # Check if the BE that was just destroyed was the
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
313 # 'active on boot' BE. If it was, display a message letting
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
314 # the user know that the 'active' BE is now also the
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
315 # 'active on boot' BE.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
316 if be_active_on_boot == be.trgt_be_name_or_snapshot[0] and rc == 0:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
317 msg.printMsg(msg.Msgs.BEADM_MSG_ACTIVE_ON_BOOT,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
318 be_active, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
319
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
320 if rc == 0:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
321 try:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
322 shutil.rmtree("/var/log/beadm/" + \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
323 be.trgt_be_name_or_snapshot[0], True)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
324 except:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
325 msg.printMsg(msg.Msgs.BEADM_ERR_LOG_RM,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
326 "/var/log/beadm/" + be.trgt_be_name_or_snapshot[0], -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
327
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
328 return 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
329
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
330 be.msg_buf["0"] = be.trgt_be_name_or_snapshot[0]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
331 if rc == msg.Msgs.BE_ERR_MOUNTED:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
332 be.msg_buf["1"] = be.msg_buf["2"] = be.trgt_be_name_or_snapshot[0]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
333 msg.printMsg(msg.Msgs.BEADM_ERR_MOUNTED, be.msg_buf, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
334 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
335 elif rc == msg.Msgs.BE_ERR_DESTROY_CURR_BE:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
336 msg.printMsg(msg.Msgs.BEADM_ERR_DESTROY_ACTIVE, \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
337 be.msg_buf["0"], -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
338 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
339 elif rc == msg.Msgs.BE_ERR_ZONES_UNMOUNT:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
340 be.msg_buf["1"] = be.trgt_be_name_or_snapshot[0]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
341 msg.printMsg(msg.Msgs.BE_ERR_ZONES_UNMOUNT, be.msg_buf, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
342 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
343 elif rc == msg.Msgs.BE_ERR_PERM or rc == msg.Msgs.BE_ERR_ACCESS:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
344 be.msg_buf["1"] = msg.getMsg(msg.Msgs.BEADM_ERR_PERMISSIONS, rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
345 msg.printMsg(msg.Msgs.BEADM_ERR_DESTROY, be.msg_buf, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
346 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
347 else:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
348 be.msg_buf["1"] = lb.beGetErrDesc(rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
349 if be.msg_buf["1"] == None:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
350 be.msg_buf["1"] = \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
351 msg.getMsg(msg.Msgs.BEADM_ERR_NO_MSG, rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
352
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
353 msg.printMsg(msg.Msgs.BEADM_ERR_DESTROY, be.msg_buf, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
354 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
355
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
356 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
357 def list(opts):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
358 """
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
359 Description: List the attributes of a Boot Environment.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
360 The following is the subcommand, options
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
361 and args that make up the opts object
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
362 passed in:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
363
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
364 list [[-a] | [-d] [-s]] [-H] [beName]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
365
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
366 -a displays all info
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
367 -d displays BE info plus dataset info
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
368 -s displays BE info plus snapshot info
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
369 -H displays info parsable by a computer
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
370
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
371 Parameters:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
372 opts - A object containing the list subcommand
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
373 and all the options and arguments passed in
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
374 on the command line mentioned above.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
375
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
376 Returns:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
377 0 - Success
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
378 1 - Failure
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
379 """
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
380
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
381 be = BootEnvironment()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
382
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
383 list_all_attrs = ""
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
384 list_datasets = ""
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
385 list_snapshots = ""
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
386 dont_display_headers = False
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
387 be_name = None
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
388 be_list = None
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
389
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
390 # Counters for detecting multiple options.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
391 # e.g. beadm list -a -a newbe
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
392 num_a_opts = 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
393 num_d_opts = 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
394 num_s_opts = 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
395 num_h_opts = 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
396
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
397 try:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
398 opts_args, be.trgt_be_name_or_snapshot = getopt.getopt(opts, "adHs")
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
399 except getopt.GetoptError:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
400 msg.printMsg(msg.Msgs.BEADM_ERR_OPT_ARGS, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
401 usage()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
402
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
403 for opt, arg in opts_args:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
404 if opt == "-a":
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
405 list_all_attrs = opt
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
406 num_a_opts += 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
407 elif opt == "-d":
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
408 list_datasets = opt
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
409 num_d_opts += 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
410 elif opt == "-s":
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
411 list_snapshots = opt
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
412 num_s_opts += 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
413 elif opt == "-H":
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
414 dont_display_headers = True
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
415 num_h_opts += 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
416
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
417 if num_a_opts > 1 or num_d_opts > 1 or num_s_opts > 1 or num_h_opts > 1:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
418 msg.printMsg(msg.Msgs.BEADM_ERR_OPT_ARGS, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
419 usage()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
420
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
421 if len(be.trgt_be_name_or_snapshot) > 1:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
422 msg.printMsg(msg.Msgs.BEADM_ERR_OPT_ARGS, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
423 usage()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
424
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
425 if len(be.trgt_be_name_or_snapshot) == 1:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
426 be_name = be.trgt_be_name_or_snapshot[0]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
427 if lb.beVerifyBEName(be_name) != 0:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
428 msg.printMsg(msg.Msgs.BEADM_ERR_BENAME, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
429 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
430
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
431 if (list_all_attrs == "-a" and (list_datasets == "-d" \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
432 or list_snapshots == "-s")):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
433 msg.printMsg(msg.Msgs.BEADM_ERR_MUTUALLY_EXCL,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
434 list_all_attrs + " " + list_datasets + " " +
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
435 list_snapshots, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
436 usage()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
437
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
438 list_options = ""
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
439
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
440 # When zones are implemented add "listZones == "-z" below
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
441
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
442 # Coelesce options to pass to displayBEs
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
443
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
444 if (list_datasets == "-d" and list_snapshots == "-s" or \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
445 list_all_attrs == "-a"):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
446 list_options = "-a"
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
447 elif list_datasets != "" or list_snapshots != "" or list_all_attrs != "":
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
448 list_options = list_datasets + " " + list_snapshots
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
449
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
450 rc, be_list = lb.beList()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
451 if rc != 0:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
452 if rc == msg.Msgs.BE_ERR_BE_NOENT:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
453 if be_name == None:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
454 msg.printMsg(msg.Msgs.BEADM_ERR_NO_BES_EXIST,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
455 None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
456 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
457
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
458 string = \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
459 msg.getMsg(msg.Msgs.BEADM_ERR_BE_DOES_NOT_EXIST,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
460 be_name)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
461 else:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
462 string = lb.beGetErrDesc(rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
463 if string == None:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
464 string = \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
465 msg.getMsg(msg.Msgs.BEADM_ERR_NO_MSG, rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
466
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
467 msg.printMsg(msg.Msgs.BEADM_ERR_LIST, string, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
468 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
469
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
470 # classify according to command line options
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
471 if list_options.find("-a") != -1 or \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
472 (list_options.find("-d") != -1 and list_options.find("-s") != -1):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
473 list_object = CompleteList(dont_display_headers) #all
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
474 elif list_options.find("-d") != -1:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
475 list_object = DatasetList(dont_display_headers) #dataset
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
476 elif list_options.find("-s") != -1:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
477 list_object = SnapshotList(dont_display_headers) #snapshot
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
478 else: list_object = BEList(dont_display_headers) #only BE
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
479
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
480 # use list method for object
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
481 if list_object.list(be_list, dont_display_headers, be_name) != 0:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
482 msg.printMsg(msg.Msgs.BEADM_ERR_LIST_DATA, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
483 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
484
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
485 return 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
486
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
487 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
488 def mount(opts):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
489 """
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
490 Description: Mount a Boot Environment on a directory.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
491 The following is the subcommand, options
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
492 and args that make up the opts object
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
493 passed in:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
494
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
495 mount beName [mountpoint]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
496
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
497 Parameters:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
498 opts - A object containing the mount subcommand
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
499 and all the options and arguments passed in
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
500 on the command line mentioned above.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
501
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
502 Returns:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
503 0 - Success
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
504 1 - Failure
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
505 """
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
506
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
507 be = BootEnvironment()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
508
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
509 mountpoint = None
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
510
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
511 try:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
512 be_name_mnt_point = getopt.getopt(opts, "")[1]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
513 except getopt.GetoptError:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
514 msg.printMsg(msg.Msgs.BEADM_ERR_OPT_ARGS, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
515 usage()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
516
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
517 mnt_point_len = len(be_name_mnt_point)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
518
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
519 if mnt_point_len != 2:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
520 msg.printMsg(msg.Msgs.BEADM_ERR_OPT_ARGS, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
521 usage()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
522 else:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
523 # Check for leading / in mount point
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
524 mountpoint = be_name_mnt_point[1]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
525 if not mountpoint.startswith('/'):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
526 msg.printMsg(msg.Msgs.BEADM_ERR_MOUNTPOINT,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
527 mountpoint, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
528 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
529
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
530 if lb.beVerifyBEName(be_name_mnt_point[0]) != 0:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
531 msg.printMsg(msg.Msgs.BEADM_ERR_BENAME, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
532 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
533
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
534 rc = lb.beMount(be_name_mnt_point[0], mountpoint)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
535 if rc == 0:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
536 return 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
537
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
538 be.msg_buf["0"] = be_name_mnt_point[0]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
539 if rc == msg.Msgs.BE_ERR_MOUNTED:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
540 be.msg_buf["1"] = \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
541 msg.getMsg(msg.Msgs.BEADM_ERR_MOUNT_EXISTS,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
542 be_name_mnt_point[0])
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
543 elif rc == msg.Msgs.BE_ERR_BE_NOENT:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
544 be.msg_buf["1"] = \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
545 msg.getMsg(msg.Msgs.BEADM_ERR_BE_DOES_NOT_EXIST,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
546 be_name_mnt_point[0])
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
547 elif rc == msg.Msgs.BE_ERR_PERM or rc == msg.Msgs.BE_ERR_ACCESS:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
548 be.msg_buf["1"] = msg.getMsg(msg.Msgs.BEADM_ERR_PERMISSIONS, rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
549 msg.printMsg(msg.Msgs.BEADM_ERR_MOUNT, be.msg_buf, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
550 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
551 else:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
552 be.msg_buf["1"] = lb.beGetErrDesc(rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
553 if be.msg_buf["1"] == None:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
554 be.msg_buf["1"] = \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
555 msg.getMsg(msg.Msgs.BEADM_ERR_NO_MSG, rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
556
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
557 msg.printMsg(msg.Msgs.BEADM_ERR_MOUNT, be.msg_buf, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
558 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
559
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
560 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
561 def unmount(opts):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
562 """
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
563 Description: Unmount a Boot Environment.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
564 The following is the subcommand, options
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
565 and args that make up the opts object
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
566 passed in:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
567
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
568 unmount [-f] beName
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
569
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
570 Parameters:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
571 opts - A object containing the unmount subcommand
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
572 and all the options and arguments passed in
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
573 on the command line mentioned above.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
574
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
575 Returns:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
576 0 - Success
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
577 1 - Failure
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
578 """
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
579
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
580 be = BootEnvironment()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
581
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
582 force_unmount = 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
583
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
584 # Counter for detecting multiple options.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
585 # e.g. beadm unmount -f -f newbe
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
586 num_f_opts = 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
587
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
588 try:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
589 optlist, args = getopt.getopt(opts, "f")
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
590 except getopt.GetoptError:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
591 msg.printMsg(msg.Msgs.BEADM_ERR_OPT_ARGS, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
592 usage()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
593
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
594 for opt, arg in optlist:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
595 if opt == "-f":
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
596 force_unmount = 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
597 num_f_opts += 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
598
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
599 if num_f_opts > 1:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
600 msg.printMsg(msg.Msgs.BEADM_ERR_OPT_ARGS, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
601 usage()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
602
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
603 if len(args) != 1:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
604 msg.printMsg(msg.Msgs.BEADM_ERR_OPT_ARGS, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
605 usage()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
606
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
607 if lb.beVerifyBEName(args[0]) != 0:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
608 msg.printMsg(msg.Msgs.BEADM_ERR_BENAME, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
609 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
610
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
611 rc = lb.beUnmount(args[0], force_unmount)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
612 if rc == 0:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
613 return 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
614
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
615 be.msg_buf["0"] = args[0]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
616 if rc == msg.Msgs.BE_ERR_UMOUNT_CURR_BE:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
617 be.msg_buf["1"] = \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
618 msg.getMsg(msg.Msgs.BEADM_ERR_UNMOUNT_ACTIVE,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
619 args[0])
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
620 elif rc == msg.Msgs.BE_ERR_UMOUNT_SHARED:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
621 be.msg_buf["1"] = \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
622 msg.getMsg(msg.Msgs.BEADM_ERR_SHARED_FS, args[0])
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
623 elif rc == msg.Msgs.BE_ERR_PERM or rc == msg.Msgs.BE_ERR_ACCESS:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
624 be.msg_buf["1"] = msg.getMsg(msg.Msgs.BEADM_ERR_PERMISSIONS, rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
625 msg.printMsg(msg.Msgs.BEADM_ERR_UNMOUNT, be.msg_buf, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
626 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
627 else:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
628 be.msg_buf["1"] = lb.beGetErrDesc(rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
629 if be.msg_buf["1"] == None:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
630 be.msg_buf["1"] = \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
631 msg.getMsg(msg.Msgs.BEADM_ERR_NO_MSG, rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
632
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
633 msg.printMsg(msg.Msgs.BEADM_ERR_UNMOUNT, be.msg_buf, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
634 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
635
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
636 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
637 def rename(opts):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
638 """
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
639 Description: Rename the name of a Boot Environment.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
640 The following is the subcommand, options
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
641 and args that make up the opts object
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
642 passed in:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
643
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
644 rename beName newBeName
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
645
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
646 Parameters:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
647 opts - A object containing the mount subcommand
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
648 and all the options and arguments passed in
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
649 on the command line mentioned above.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
650
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
651 Returns:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
652 0 - Success
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
653 1 - Failure
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
654 """
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
655
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
656 be = BootEnvironment()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
657
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
658 try:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
659 be_names = getopt.getopt(opts, "")[1]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
660 except getopt.GetoptError:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
661 msg.printMsg(msg.Msgs.BEADM_ERR_OPT_ARGS, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
662 usage()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
663
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
664 if len(be_names) != 2:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
665 msg.printMsg(msg.Msgs.BEADM_ERR_OPT_ARGS, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
666 usage()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
667
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
668 if lb.beVerifyBEName(be_names[0]) != 0:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
669 msg.printMsg(msg.Msgs.BEADM_ERR_BENAME, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
670 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
671
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
672 if lb.beVerifyBEName(be_names[1]) != 0:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
673 msg.printMsg(msg.Msgs.BEADM_ERR_BENAME, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
674 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
675
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
676 rc = lb.beRename(be_names[0], be_names[1])
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
677
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
678 if rc == 0:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
679 return 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
680
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
681 be.msg_buf["0"] = be_names[0]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
682 if rc == msg.Msgs.BE_ERR_BE_NOENT:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
683 be.msg_buf["1"] = \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
684 msg.getMsg(msg.Msgs.BEADM_ERR_BE_DOES_NOT_EXIST,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
685 be_names[0])
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
686 elif rc == msg.Msgs.BE_ERR_PERM or rc == msg.Msgs.BE_ERR_ACCESS:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
687 be.msg_buf["1"] = msg.getMsg(msg.Msgs.BEADM_ERR_PERMISSIONS, rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
688 msg.printMsg(msg.Msgs.BEADM_ERR_RENAME, be.msg_buf, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
689 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
690 else:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
691 be.msg_buf["1"] = lb.beGetErrDesc(rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
692 if be.msg_buf["1"] == None:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
693 be.msg_buf["1"] = \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
694 msg.getMsg(msg.Msgs.BEADM_ERR_NO_MSG, rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
695
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
696 msg.printMsg(msg.Msgs.BEADM_ERR_RENAME, be.msg_buf, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
697 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
698
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
699 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
700 # End of CLI public functions
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
701 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
702
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
703 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
704 # Verify the options and arguments for the beadm create subcommand
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
705
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
706 def verifyCreateOptionsArgs(be):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
707 """Check valid BE names."""
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
708
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
709 len_be_args = len(be.trgt_be_name_or_snapshot)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
710 if len_be_args < 1:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
711 msg.printMsg(msg.Msgs.BEADM_ERR_OPT_ARGS, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
712 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
713 if len_be_args > 1:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
714 msg.printMsg(msg.Msgs.BEADM_ERR_OPT_ARGS, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
715 idx = 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
716 while len_be_args > idx:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
717 msg.printMsg(msg.Msgs.BEADM_MSG_FREE_FORMAT,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
718 be.trgt_be_name_or_snapshot[idx], -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
719 idx += 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
720 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
721
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
722 return 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
723
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
724 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
725 def parseCLI(cli_opts_args):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
726 """Parse command line interface arguments."""
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
727
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
728 gettext.install("beadm", "/usr/lib/locale")
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
729
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
730 if len(cli_opts_args) == 0:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
731 usage()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
732
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
733 subcommand = cli_opts_args[0]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
734 opts_args = cli_opts_args[1:]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
735
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
736 if subcommand == "activate":
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
737 rc = activate(opts_args)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
738 elif subcommand == "create":
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
739 rc = create(opts_args)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
740 elif subcommand == "destroy":
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
741 rc = destroy(opts_args)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
742 elif subcommand == "list":
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
743 rc = list(opts_args)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
744 elif subcommand == "mount":
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
745 rc = mount(opts_args)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
746 elif subcommand == "rename":
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
747 rc = rename(opts_args)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
748 elif subcommand == "upgrade":
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
749 rc = upgrade(opts_args)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
750 elif subcommand == "unmount" or \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
751 subcommand == "umount": #aliased for convenience
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
752 rc = unmount(opts_args)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
753 elif subcommand == "verify":
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
754 rc = verify()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
755 else:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
756 msg.printMsg(msg.Msgs.BEADM_ERR_ILL_SUBCOMMAND,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
757 subcommand, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
758 usage()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
759
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
760 return(rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
761
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
762 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
763 def main():
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
764 """main function."""
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
765
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
766 gettext.install("beadm", "/usr/lib/locale")
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
767
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
768 if not isBeadmSupported():
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
769 return(1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
770
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
771 return(parseCLI(sys.argv[1:]))
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
772
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
773 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
774 def initBELog(log_id, be):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
775 """
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
776 Initiate the BE log
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
777
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
778 Format of the log
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
779 yyyymmdd_hhmmss - 20071130_140558
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
780 yy - year; 2007
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
781 mm - month; 11
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
782 dd - day; 30
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
783 hh - hour; 14
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
784 mm - minute; 05
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
785 ss - second; 58
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
786 """
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
787
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
788 # /var/log/beadm/<beName>/<logId>.log.<yyyymmdd_hhmmss>
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
789
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
790 date = time.strftime("%Y%m%d_%H%M%S", time.localtime())
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
791
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
792 be.log = "/var/log/beadm/" + be.trgt_be_name_or_snapshot[0] + \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
793 "/" + log_id + ".log" + "." + date
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
794
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
795 if not os.path.isfile(be.log) and not os.path.islink(be.log):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
796 if not os.path.isdir(os.path.dirname(be.log)):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
797 try:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
798 os.makedirs(os.path.dirname(be.log), 0644)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
799 except OSError:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
800 be.msg_buf["0"] = be.trgt_be_name_or_snapshot[0]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
801 be.msg_buf["1"] = \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
802 msg.getMsg(msg.Msgs.BEADM_ERR_PERMISSIONS,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
803 0)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
804 msg.printMsg(msg.Msgs.BEADM_ERR_CREATE,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
805 be.msg_buf, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
806 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
807 try:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
808 be.log_id = open(be.log, "a")
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
809 except IOError:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
810 msg.printMsg(msg.Msgs.BEADM_ERR_LOG_CREATE,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
811 None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
812 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
813 else:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
814 # Should never happen due to new time stamp each call
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
815 msg.printMsg(msg.Msgs.BEADM_ERR_LOG_CREATE, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
816 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
817
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
818 return 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
819
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
820 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
821 def cleanupBELog(be):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
822 """Clean up BE log."""
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
823
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
824 be.log_id.close()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
825
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
826 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
827 def displayDestructionQuestion(be):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
828 """Display a destruction question and wait for user response."""
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
829
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
830 msg.printMsg(msg.Msgs.BEADM_MSG_DESTROY, be.trgt_be_name_or_snapshot[0], -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
831 while True:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
832 try:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
833 value = raw_input().strip().upper()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
834 except KeyboardInterrupt:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
835 return False
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
836 if (value == 'Y' or value == 'YES'):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
837 return True
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
838 elif len(value) == 0 or value == 'N' or value == 'NO':
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
839 msg.printMsg(msg.Msgs.BEADM_MSG_DESTROY_NO,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
840 be.trgt_be_name_or_snapshot[0], -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
841 return False
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
842 else:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
843 msg.printMsg(msg.Msgs.BEADM_ERR_INVALID_RESPONSE,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
844 -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
845
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
846 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
847 def setMaxColumnWidths(be_max_w, ds_max_w, ss_max_w, be_list):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
848 """Figure out max column widths for BE's, Datasets and Snapshots."""
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
849
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
850 for be_item in be_list:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
851 if be_item.get("orig_be_name") is not None:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
852 determineMaxBEColWidth(be_item, be_max_w)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
853 if be_item.get("dataset") is not None:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
854 determineMaxDSColWidth(be_item, ds_max_w)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
855 if be_item.get("snap_name") is not None:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
856 determineMaxSSColWidth(be_item, ss_max_w)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
857
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
858 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
859 def getActiveBEAndActiveOnBootBE():
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
860 """Return the 'active on boot' BE, the 'active' BE or None."""
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
861
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
862 active_be = None
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
863 active_be_on_boot = None
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
864
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
865 rc, be_list = lb.beList()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
866
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
867 if rc != 0:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
868 if rc == msg.Msgs.BE_ERR_BE_NOENT:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
869 string = \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
870 msg.getMsg(msg.Msgs.BEADM_ERR_NO_BES_EXIST)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
871 else:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
872 string = lb.beGetErrDesc(rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
873 if string == None:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
874 string = \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
875 msg.getMsg(msg.Msgs.BEADM_ERR_NO_MSG, rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
876
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
877 msg.printMsg(msg.Msgs.BEADM_ERR_LIST, string, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
878 return None
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
879
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
880 for be_vals in be_list:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
881 srcBeName = be_vals.get("orig_be_name")
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
882 if be_vals.get("active"):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
883 active_be = srcBeName
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
884 if be_vals.get("active_boot"):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
885 active_be_on_boot = srcBeName
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
886 if active_be is not None and active_be_on_boot is not None:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
887 break
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
888
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
889 return active_be, active_be_on_boot
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
890
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
891 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
892 def createSnapshot(be):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
893 """Create a snapshot."""
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
894
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
895 be_name, snap_name = be.trgt_be_name_or_snapshot[0].split("@")
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
896
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
897 rc = lb.beCreateSnapshot(be_name, snap_name)[0]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
898
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
899 if rc == 0:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
900 return 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
901
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
902 be.msg_buf["0"] = be.trgt_be_name_or_snapshot[0]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
903 if rc == msg.Msgs.BE_ERR_BE_NOENT:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
904 be.msg_buf["1"] = \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
905 msg.getMsg(msg.Msgs.BEADM_ERR_BE_DOES_NOT_EXIST,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
906 be_name)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
907 elif rc == msg.Msgs.BE_ERR_SS_EXISTS:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
908 be.msg_buf["1"] = msg.getMsg(msg.Msgs.BEADM_ERR_SNAP_EXISTS,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
909 be.trgt_be_name_or_snapshot[0])
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
910 elif rc == msg.Msgs.BE_ERR_PERM or rc == msg.Msgs.BE_ERR_ACCESS:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
911 be.msg_buf["1"] = msg.getMsg(msg.Msgs.BEADM_ERR_PERMISSIONS, rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
912 msg.printMsg(msg.Msgs.BEADM_ERR_CREATE, be.msg_buf, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
913 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
914 else:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
915 be.msg_buf["1"] = lb.beGetErrDesc(rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
916 if be.msg_buf["1"] == None:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
917 be.msg_buf["1"] = \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
918 msg.getMsg(msg.Msgs.BEADM_ERR_NO_MSG, rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
919
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
920 msg.printMsg(msg.Msgs.BEADM_ERR_CREATE, be.msg_buf, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
921
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
922 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
923
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
924 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
925 def createBE(be):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
926 """Create a Boot Environment."""
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
927
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
928 rc = lb.beCopy(be.trgt_be_name_or_snapshot[0], be.src_be_name_or_snapshot,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
929 None, be.trgt_rpool, be.properties, be.description)[0]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
930
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
931 if rc == 0:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
932 msg.printMsg(msg.Msgs.BEADM_MSG_BE_CREATE_SUCCESS,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
933 be.trgt_be_name_or_snapshot[0], be.log_id)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
934 return 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
935
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
936 be.msg_buf["0"] = be.trgt_be_name_or_snapshot[0]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
937 if rc == msg.Msgs.BE_ERR_BE_NOENT:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
938 be.msg_buf["1"] = \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
939 msg.getMsg(msg.Msgs.BEADM_ERR_BE_DOES_NOT_EXIST,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
940 be.src_be_name_or_snapshot)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
941 elif rc == msg.Msgs.BE_ERR_BE_EXISTS:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
942 be.msg_buf["1"] = msg.getMsg(msg.Msgs.BEADM_ERR_BE_EXISTS,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
943 be.trgt_be_name_or_snapshot[0])
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
944 elif rc == msg.Msgs.BE_ERR_PERM or rc == msg.Msgs.BE_ERR_ACCESS:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
945 be.msg_buf["1"] = msg.getMsg(msg.Msgs.BEADM_ERR_PERMISSIONS, rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
946 msg.printMsg(msg.Msgs.BEADM_ERR_CREATE, be.msg_buf, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
947 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
948 else:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
949 be.msg_buf["1"] = lb.beGetErrDesc(rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
950 if be.msg_buf["1"] == None:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
951 be.msg_buf["1"] = \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
952 msg.getMsg(msg.Msgs.BEADM_ERR_NO_MSG, rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
953
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
954 msg.printMsg(msg.Msgs.BEADM_ERR_CREATE, be.msg_buf, be.log_id)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
955
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
956 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
957
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
958 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
959 def createBEFromSnapshot(be):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
960 """Create a BE based off a snapshot."""
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
961
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
962 be_name, snap_name = be.src_be_name_or_snapshot.split("@")
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
963
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
964 rc = lb.beCopy(be.trgt_be_name_or_snapshot[0], be_name, snap_name,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
965 be.trgt_rpool, be.properties, be.description)[0]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
966
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
967 if rc == 0:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
968 msg.printMsg(msg.Msgs.BEADM_MSG_BE_CREATE_SUCCESS,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
969 be.trgt_be_name_or_snapshot[0], be.log_id)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
970 return 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
971
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
972 be.msg_buf["0"] = be.trgt_be_name_or_snapshot[0]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
973 if rc == msg.Msgs.BE_ERR_SS_NOENT:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
974 be.msg_buf["1"] = \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
975 msg.getMsg(msg.Msgs.BEADM_ERR_SNAP_DOES_NOT_EXISTS,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
976 be.src_be_name_or_snapshot)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
977 elif rc == msg.Msgs.BE_ERR_BE_EXISTS:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
978 be.msg_buf["1"] = msg.getMsg(msg.Msgs.BEADM_ERR_BE_EXISTS, \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
979 be.trgt_be_name_or_snapshot[0])
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
980 elif rc == msg.Msgs.BE_ERR_BE_NOENT:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
981 be.msg_buf["1"] = \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
982 msg.getMsg(msg.Msgs.BEADM_ERR_BE_DOES_NOT_EXIST, \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
983 be_name)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
984 elif rc == msg.Msgs.BE_ERR_PERM or rc == msg.Msgs.BE_ERR_ACCESS:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
985 be.msg_buf["1"] = msg.getMsg(msg.Msgs.BEADM_ERR_PERMISSIONS, rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
986 msg.printMsg(msg.Msgs.BEADM_ERR_CREATE, be.msg_buf, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
987 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
988 else:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
989 be.msg_buf["1"] = lb.beGetErrDesc(rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
990 if be.msg_buf["1"] == None:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
991 be.msg_buf["1"] = \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
992 msg.getMsg(msg.Msgs.BEADM_ERR_NO_MSG, rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
993
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
994 msg.printMsg(msg.Msgs.BEADM_ERR_CREATE, be.msg_buf, be.log_id)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
995
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
996 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
997
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
998 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
999 def activateBE(be):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1000 """
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1001 Activate a BE. Called from create() when -a is provided as CLI
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1002 Option.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1003 """
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1004
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1005 rc = lb.beActivate(be.trgt_be_name_or_snapshot[0])
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1006 if rc == 0:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1007 return 0
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1008
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1009 be.msg_buf["0"] = be.trgt_be_name_or_snapshot[0]
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1010 if rc == msg.Msgs.BE_ERR_BE_NOENT:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1011 be.msg_buf["1"] = \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1012 msg.getMsg(msg.Msgs.BEADM_ERR_BE_DOES_NOT_EXIST, opts[0])
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1013 else:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1014 be.msg_buf["1"] = lb.beGetErrDesc(rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1015 if be.msg_buf["1"] == None:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1016 be.msg_buf["1"] = \
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1017 msg.getMsg(msg.Msgs.BEADM_ERR_NO_MSG, rc)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1018
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1019 msg.printMsg(msg.Msgs.BEADM_ERR_ACTIVATE, be.msg_buf, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1020
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1021 return 1
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1022
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1023 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1024 def isBeadmSupported():
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1025 """
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1026 Currently the only environment that beadm is supported in is
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1027 a global zone. Check that beadm is executing in a
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1028 global zone and not in a non-global zone.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1029 """
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1030
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1031 try:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1032 proc = subprocess.Popen("/sbin/zonename",
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1033 stdout = subprocess.PIPE,
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1034 stderr = subprocess.STDOUT)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1035 # Grab stdout.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1036 zonename = proc.communicate()[0].rstrip('\n')
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1037 except OSError, (errno, strerror):
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1038 msg.printMsg(msg.Msgs.BEADM_ERR_OS, strerror, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1039 # Ignore a failed attempt to retreive the zonename.
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1040 return True
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1041
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1042 if zonename != "global":
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1043 msg.printMsg(msg.Msgs.BEADM_ERR_NOT_SUPPORTED_NGZ, None, -1)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1044 return False
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1045
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1046 return True
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1047
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1048
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1049 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1050 if __name__ == "__main__":
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1051 try:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1052 RC = main()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1053 except SystemExit, e:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1054 raise e
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1055 except:
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1056 traceback.print_exc()
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1057 sys.exit(99)
3c7681e3e323 PSARC 2010/059 SNAP BE Management
Glenn Lagasse <glenn.lagasse@oracle.com>
parents:
diff changeset
1058 sys.exit(RC)