Mercurial > illumos > illumos-gate
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 |
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) |