comparison usr/src/cmd/cmd-inet/usr.sadm/dhcpmgr/com/sun/dhcpmgr/cli/dhtadm/DhtAdm.java @ 0:c9caec207d52 b86

Initial porting based on b86
author Koji Uno <koji.uno@sun.com>
date Tue, 02 Jun 2009 18:56:50 +0900
parents
children 1a15d5aaf794
comparison
equal deleted inserted replaced
-1:000000000000 0:c9caec207d52
1 /*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
7 * with the License.
8 *
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 */
22 /*
23 * ident "@(#)DhtAdm.java 1.6 05/06/08 SMI"
24 *
25 * Copyright 2001-2002 Sun Microsystems, Inc. All rights reserved.
26 * Use is subject to license terms.
27 */
28 package com.sun.dhcpmgr.cli.dhtadm;
29
30 import com.sun.dhcpmgr.cli.common.*;
31 import com.sun.dhcpmgr.server.*;
32
33 import java.lang.IllegalArgumentException;
34 import java.text.MessageFormat;
35
36 /**
37 * This class represents the entry point to the DHCP CLI dhcptab
38 * administration.
39 */
40 public class DhtAdm
41 extends DhcpCliProgram {
42
43 /**
44 * The program signature.
45 */
46 public static final String SIGNATURE = "dhtadm: ";
47
48 /**
49 * The valid options for all DhtAdm administration.
50 */
51 private static String optString = "ACDIMPRvgr:p:u:s:m:n:e:d:B;";
52
53 public static final int ADD_ENTRY = 'A';
54 public static final int MODIFY_ENTRY = 'M';
55 public static final int DELETE_ENTRY = 'D';
56 public static final int CREATE_TABLE = 'C';
57 public static final int REMOVE_TABLE = 'R';
58 public static final int DISPLAY_TABLE = 'P';
59 public static final int BATCH_EXECUTION = 'B';
60
61 public static final int MACRONAME = 'm';
62 public static final int SYMBOLNAME = 's';
63 public static final int NEWNAME = 'n';
64 public static final int DEFINITION = 'd';
65 public static final int EDITSYMBOL = 'e';
66 public static final int RESOURCE = 'r';
67 public static final int RESOURCE_CONFIG = 'u';
68 public static final int PATH = 'p';
69 public static final int VERBOSE = 'v';
70 public static final int SIGHUP = 'g';
71
72 /**
73 * Constructs a dhtadm command.
74 * @param args the options to the command.
75 */
76 public DhtAdm(String [] args) {
77
78 reset(args);
79 // Set the options.
80 //
81 options = new DhcpCliOptions();
82 this.args = args;
83
84 } // constructor
85
86 /**
87 * Resets a DhtAdm for reuse. Used by DhcpBatch program.
88 * @param args the options to the command.
89 */
90 public void reset(String [] args) {
91
92 clearFunction();
93 options = new DhcpCliOptions();
94 this.args = args;
95
96 }
97
98 /**
99 * Returns the manpage signature for the program.
100 * @return the manpage signature for the program.
101 */
102 public String getManPage() {
103 return "dhtadm(1M)";
104 }
105
106 /**
107 * Displays program usage.
108 */
109 public void usage() {
110
111 DhcpCliPrint.printErrMessage(getString("usage"));
112
113 } // usage
114
115 /**
116 * Executes the program function.
117 * @return SUCCESS, EXISTS, ENOENT, WARNING, or CRITICAL
118 */
119 public int execute() {
120
121 int returnCode = SUCCESS;
122
123 // Get the options and go exec the correct function.
124 //
125 GetOpt getopt = new GetOpt(args, optString);
126 try {
127 int option;
128 while ((option = getopt.getNextOption()) != -1) {
129 processArg(option, getopt.getOptionArg());
130 }
131
132 int lastIndex = getopt.getNextOptionIndex();
133 if (args.length != lastIndex) {
134 Object [] arguments = new Object[1];
135 arguments[0] = args[lastIndex];
136 MessageFormat form =
137 new MessageFormat(getString("invalid_arg"));
138 throw new IllegalArgumentException(form.format(arguments));
139 }
140
141 if (function == null) {
142 String msg = getString("no_function_error");
143 throw new IllegalArgumentException(msg);
144 }
145
146 // Check the validity of the data store version.
147 //
148 if (!function.isVersionValid(false)) {
149 return (CRITICAL);
150 }
151
152 // Create a DHCP datastore object with the user specified objects.
153 //
154 function.setDhcpDatastore(options.valueOf(RESOURCE),
155 options.valueOf(PATH), options.valueOf(RESOURCE_CONFIG));
156
157 function.setOptions(options);
158 function.setStandardOptions();
159 returnCode = function.execute();
160
161 } catch (IllegalArgumentException e) {
162 StringBuffer msg = new StringBuffer(SIGNATURE);
163 msg.append(DhcpCliFunction.getMessage(e));
164 DhcpCliPrint.printErrMessage(msg.toString());
165 DhcpCliPrint.printErrMessage("");
166 usage();
167 returnCode = CRITICAL;
168 } catch (Throwable e) {
169 StringBuffer msg = new StringBuffer(SIGNATURE);
170 msg.append(DhcpCliFunction.getMessage(e));
171 DhcpCliPrint.printErrMessage(msg.toString());
172 returnCode = CRITICAL;
173 }
174
175 // Signal server if requested by user and main operation successful
176 if (returnCode == SUCCESS && options.isSet(SIGHUP)) {
177 try {
178 DhcpMgr dhcpMgr = new DhcpMgrImpl();
179 dhcpMgr.getDhcpServiceMgr().reload();
180 } catch (Throwable e) {
181 returnCode = WARNING;
182 // Display warning
183 StringBuffer msg = new StringBuffer(SIGNATURE);
184 msg.append(getString("sighup_failed"));
185 DhcpCliPrint.printErrMessage(msg.toString());
186 }
187 }
188
189 return (returnCode);
190
191 } // execute
192
193 /**
194 * Processes one program argument.
195 * @param option the option flag
196 * @param value the option value(if any)
197 * @exception IllegalArgumentException if an invalid argument was entered
198 */
199 public void processArg(int option, String value)
200 throws IllegalArgumentException {
201
202 switch (option) {
203
204 case ADD_ENTRY:
205 setFunction(new AddEntry());
206 break;
207 case MODIFY_ENTRY:
208 setFunction(new ModifyEntry());
209 break;
210 case DELETE_ENTRY:
211 setFunction(new DeleteEntry());
212 break;
213 case CREATE_TABLE:
214 setFunction(new CreateTable());
215 break;
216 case REMOVE_TABLE:
217 setFunction(new RemoveTable());
218 break;
219 case DISPLAY_TABLE:
220 setFunction(new DisplayTable());
221 break;
222 case BATCH_EXECUTION:
223 setFunction(new DhtAdmBatch(value));
224 break;
225 default:
226 options.setOption(option, value);
227 }
228
229 } // processArg
230
231 /**
232 * Returns a localized string for this function
233 * @param key the resource bundle string identifier
234 * @return string from resource bundle.
235 */
236 public String getString(String key) {
237
238 return ResourceStrings.getString(key);
239
240 } // getString
241
242 /**
243 * The entry point for the program.
244 * @param args the program arguments
245 */
246 public static void main(String[] args) {
247
248 DhtAdm dhtadm = new DhtAdm(args);
249 int returnCode = DhtAdm.CRITICAL;
250 if (dhtadm.isValidUser()) {
251 returnCode = dhtadm.execute();
252 }
253 System.exit(returnCode);
254
255 } // main
256
257 } // DhtAdm