You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by de...@apache.org on 2013/04/04 00:03:36 UTC
svn commit: r1464216 - in
/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli:
CliBase.java DuccJobSubmit.java DuccManagedReservationSubmit.java
DuccServiceApi.java DuccServiceSubmit.java DuccUiUtilities.java
IUiOptions.java
Author: degenaro
Date: Wed Apr 3 22:03:35 2013
New Revision: 1464216
URL: http://svn.apache.org/r1464216
Log:
UIMA-2793 Support driver and process common specification for each of classpath, environment and jvmargs
Modified:
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliBase.java
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccManagedReservationSubmit.java
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceApi.java
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceSubmit.java
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccUiUtilities.java
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IUiOptions.java
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliBase.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliBase.java?rev=1464216&r1=1464215&r2=1464216&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliBase.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliBase.java Wed Apr 3 22:03:35 2013
@@ -159,7 +159,12 @@ public abstract class CliBase
*/
boolean resolve_service_dependencies(String endpoint)
{
- String jvmargs = cli_props.getProperty(UiOption.ProcessJvmArgs.pname());
+ String key_ja = UiOption.ProcessJvmArgs.pname();
+ if ( cli_props.containsKey(UiOption.JvmArgs.pname()) ) {
+ key_ja = UiOption.JvmArgs.pname();
+ }
+ String jvmargs = cli_props.getProperty(key_ja);
+
Properties jvmprops = DuccUiUtilities.jvmArgsToProperties(jvmargs);
String deps = cli_props.getProperty(UiOption.ServiceDependency.pname());
@@ -273,6 +278,10 @@ public abstract class CliBase
this.init(myClassName, opts, args, cli_props, host_s, port_s, servlet, consoleCb, null);
}
+ protected synchronized void init() {
+ ducc_home = Utils.findDuccHome();
+ }
+
protected synchronized void init(String myClassName, UiOption[] opts, String[] args, DuccProperties cli_props, String host_s, String port_s, String servlet, IDuccCallback consoleCb, String logExtension)
throws Exception
{
@@ -631,12 +640,19 @@ public abstract class CliBase
if ( console_attach ) {
console_listener = new ConsoleListener(this, consoleCb);
+ String key_pe = UiOption.ProcessEnvironment.pname();
+ String key_de = UiOption.DriverEnvironment.pname();
+ if ( cli_props.containsKey(UiOption.Environment.pname()) ) {
+ key_pe = UiOption.Environment.pname();
+ key_de = UiOption.Environment.pname();
+ }
+
if ( cli_props.containsKey(UiOption.ProcessAttachConsole.pname()) ) {
- set_console_port(cli_props, UiOption.ProcessEnvironment.pname());
+ set_console_port(cli_props, key_pe);
}
if (cli_props.containsKey(UiOption.DriverAttachConsole.pname()) ) {
- set_console_port(cli_props, UiOption.DriverEnvironment.pname());
+ set_console_port(cli_props, key_de);
}
}
}
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java?rev=1464216&r1=1464215&r2=1464216&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java Wed Apr 3 22:03:35 2013
@@ -42,8 +42,55 @@ public class DuccJobSubmit
// public DuccJobSubmit(IDuccMessageProcessor duccMessageProcessor) {
// this.duccMessageProcessor = duccMessageProcessor;
// }
+
+ UiOption[] opts_release = new UiOption[] {
+ UiOption.Help,
+ UiOption.Debug,
+
+ UiOption.ProcessDebug,
+ UiOption.ProcessAttachConsole,
+ UiOption.DriverDebug,
+ UiOption.DriverAttachConsole,
+ UiOption.Timestamp,
+ UiOption.Description,
+ UiOption.SchedulingClass,
+
+ UiOption.LogDirectory,
+ UiOption.WorkingDirectory,
+ UiOption.Jvm,
+
+ UiOption.JvmArgs,
+ UiOption.Classpath,
+ UiOption.Environment,
+
+ UiOption.DriverDescriptorCR,
+ UiOption.DriverDescriptorCROverrides,
+ UiOption.DriverExceptionHandler,
+
+ UiOption.ProcessMemorySize,
+ UiOption.ProcessDD,
+ UiOption.ProcessDescriptorCM,
+ UiOption.ProcessDescriptorCMOverrides,
+ UiOption.ProcessDescriptorAE,
+ UiOption.ProcessDescriptorAEOverrides,
+ UiOption.ProcessDescriptorCC,
+ UiOption.ProcessDescriptorCCOverrides,
+
+ UiOption.ProcessDeploymentsMax,
+ UiOption.ProcessInitializationFailuresCap,
+ UiOption.ProcessFailuresLimit,
+ UiOption.ProcessThreadCount,
+ UiOption.ProcessPerItemTimeMax,
+ UiOption.ProcessGetMetaTimeMax,
+
+ UiOption.Specification,
+ UiOption.WaitForCompletion,
+ UiOption.CancelJobOnInterrupt,
+ UiOption.ServiceDependency,
+ UiOption.ClasspathOrder,
+ };
- UiOption[] opts = new UiOption[] {
+ UiOption[] opts_beta = new UiOption[] {
UiOption.Help,
UiOption.Debug,
@@ -59,6 +106,10 @@ public class DuccJobSubmit
UiOption.WorkingDirectory,
UiOption.Jvm,
+ UiOption.JvmArgs,
+ UiOption.Classpath,
+ UiOption.Environment,
+
UiOption.DriverJvmArgs,
UiOption.DriverClasspath,
UiOption.DriverEnvironment,
@@ -92,8 +143,9 @@ public class DuccJobSubmit
UiOption.ServiceDependency,
UiOption.ClasspathOrder,
};
-
-
+
+ UiOption[] opts = opts_release;
+
public DuccJobSubmit(ArrayList<String> args)
throws Exception
{
@@ -116,13 +168,21 @@ public class DuccJobSubmit
throws Exception
{
String[] arg_array = args.toArray(new String[args.size()]);
+ init();
+ if(DuccUiUtilities.isSupportedBeta()) {
+ opts = opts_beta;
+ }
init(this.getClass().getName(), opts, arg_array, jobRequestProperties, or_host, or_port, "or", consoleCb, null);
}
public DuccJobSubmit(String[] args, IDuccCallback consoleCb)
throws Exception
{
- init(this.getClass().getName(), opts, args, jobRequestProperties, or_host, or_port, "or", consoleCb, null);
+ init();
+ if(DuccUiUtilities.isSupportedBeta()) {
+ opts = opts_beta;
+ }
+ init(this.getClass().getName(), opts, args, jobRequestProperties, or_host, or_port, "or", consoleCb, null);
}
public DuccJobSubmit(Properties props, IDuccCallback consoleCb)
@@ -132,6 +192,10 @@ public class DuccJobSubmit
Object v = props.get(k);
jobRequestProperties.put(k, v);
}
+ init();
+ if(DuccUiUtilities.isSupportedBeta()) {
+ opts = opts_beta;
+ }
init(this.getClass().getName(), opts, null, jobRequestProperties, or_host, or_port, "or", consoleCb, null);
}
@@ -147,7 +211,12 @@ public class DuccJobSubmit
protected void enrich_parameters_for_debug(Properties props)
throws Exception
{
-
+ String key_process = UiOption.ProcessJvmArgs.pname();
+ String key_driver = UiOption.ProcessJvmArgs.pname();
+ if(jobRequestProperties.containsKey(UiOption.JvmArgs.pname())) {
+ key_process = UiOption.JvmArgs.pname();
+ key_driver = UiOption.JvmArgs.pname();
+ }
try {
int jp_debug_port = -1;
int jd_debug_port = -2; // a trick, must be different from jp_debug_port; see below
@@ -161,7 +230,7 @@ public class DuccJobSubmit
}
jp_debug_port = Integer.parseInt(jp_port_s);
- set_debug_parms(props, UiOption.ProcessJvmArgs.pname(), jp_debug_port);
+ set_debug_parms(props, key_process, jp_debug_port);
// For debugging, if the JP is being debugged, we have to force max processes to .1
props.setProperty(UiOption.ProcessDeploymentsMax.pname(), "1");
}
@@ -173,7 +242,7 @@ public class DuccJobSubmit
throw new IllegalArgumentException("Missing port for " + do_debug);
}
jd_debug_port = Integer.parseInt(jd_port_s);
- set_debug_parms(props, UiOption.ProcessJvmArgs.pname(), jd_debug_port);
+ set_debug_parms(props, key_driver, jd_debug_port);
}
if ( jp_debug_port == jd_debug_port ) {
@@ -272,11 +341,6 @@ public class DuccJobSubmit
}
}
-
- private void adjust_jvm_args(Properties jobRequestProperties) {
- adjust_specific_jvm_args(DuccPropertiesResolver.ducc_submit_driver_jvm_args, UiOption.DriverJvmArgs);
- adjust_specific_jvm_args(DuccPropertiesResolver.ducc_submit_process_jvm_args, UiOption.ProcessJvmArgs);
- }
//**********
@@ -291,23 +355,49 @@ public class DuccJobSubmit
return false;
}
- /*
- * employ default driver classpath if not specified
- */
- String driver_classpath = jobRequestProperties.getProperty(UiOption.DriverClasspath.pname());
- if(driver_classpath == null) {
- driver_classpath = System.getProperty("java.class.path");
- jobRequestProperties.setProperty(UiOption.DriverClasspath.pname(), driver_classpath);
- }
-
- /*
- * employ default process classpath if not specified
- */
- String process_classpath = jobRequestProperties.getProperty(UiOption.ProcessClasspath.pname());
- if(process_classpath == null) {
- process_classpath = System.getProperty("java.class.path");
- jobRequestProperties.setProperty(UiOption.ProcessClasspath.pname(), process_classpath);
- }
+ boolean cp0 = jobRequestProperties.containsKey(UiOption.Classpath.pname());
+ boolean cpd = jobRequestProperties.containsKey(UiOption.DriverClasspath.pname());
+ boolean cpp = jobRequestProperties.containsKey(UiOption.ProcessClasspath.pname());
+
+ if(cp0 && cpd) {
+ throw new IllegalArgumentException("Conflict: cannot specify both "+UiOption.Classpath.pname()+" and "+UiOption.DriverClasspath.pname());
+ }
+ if(cp0 && cpp) {
+ throw new IllegalArgumentException("Conflict: cannot specify both "+UiOption.Classpath.pname()+" and "+UiOption.ProcessClasspath.pname());
+ }
+ if(cp0) {
+ // Nothing to do
+ }
+ else {
+ if(cpd || cpp) {
+ /*
+ * employ default driver classpath if not specified
+ */
+ String driver_classpath = jobRequestProperties.getProperty(UiOption.DriverClasspath.pname());
+ if(driver_classpath == null) {
+ driver_classpath = System.getProperty("java.class.path");
+ jobRequestProperties.setProperty(UiOption.DriverClasspath.pname(), driver_classpath);
+ }
+ /*
+ * employ default process classpath if not specified
+ */
+ String process_classpath = jobRequestProperties.getProperty(UiOption.ProcessClasspath.pname());
+ if(process_classpath == null) {
+ process_classpath = System.getProperty("java.class.path");
+ jobRequestProperties.setProperty(UiOption.ProcessClasspath.pname(), process_classpath);
+ }
+ }
+ else {
+ /*
+ * employ default classpath if not specified
+ */
+ String classpath = jobRequestProperties.getProperty(UiOption.Classpath.pname());
+ if(classpath == null) {
+ classpath = System.getProperty("java.class.path");
+ jobRequestProperties.setProperty(UiOption.Classpath.pname(), classpath);
+ }
+ }
+ }
/*
* employ default process initialization failures cap if not specified
@@ -331,14 +421,36 @@ public class DuccJobSubmit
/*
* set DUCC_LD_LIBRARY_PATH in driver, process environment
*/
- if (!DuccUiUtilities.ducc_environment(this, jobRequestProperties, UiOption.DriverEnvironment.pname())) {
- return false;
- }
-
- if (!DuccUiUtilities.ducc_environment(this, jobRequestProperties, UiOption.ProcessEnvironment.pname())) {
- return false;
- }
-
+ boolean ev0 = jobRequestProperties.containsKey(UiOption.Environment.pname());
+ boolean evd = jobRequestProperties.containsKey(UiOption.DriverEnvironment.pname());
+ boolean evp = jobRequestProperties.containsKey(UiOption.ProcessEnvironment.pname());
+ if(ev0 && evd) {
+ throw new IllegalArgumentException("Conflict: cannot specify both "+UiOption.Environment.pname()+" and "+UiOption.DriverEnvironment.pname());
+ }
+ if(ev0 && evp) {
+ throw new IllegalArgumentException("Conflict: cannot specify both "+UiOption.Environment.pname()+" and "+UiOption.ProcessEnvironment.pname());
+ }
+ if(ev0) {
+ if (!DuccUiUtilities.ducc_environment(this, jobRequestProperties, UiOption.Environment.pname())) {
+ return false;
+ }
+ }
+ else {
+ if(evd || evp) {
+ if (!DuccUiUtilities.ducc_environment(this, jobRequestProperties, UiOption.DriverEnvironment.pname())) {
+ return false;
+ }
+ if (!DuccUiUtilities.ducc_environment(this, jobRequestProperties, UiOption.ProcessEnvironment.pname())) {
+ return false;
+ }
+ }
+ else {
+ if (!DuccUiUtilities.ducc_environment(this, jobRequestProperties, UiOption.Environment.pname())) {
+ return false;
+ }
+ }
+ }
+
/*
* limit total number of threads
*/
@@ -347,7 +459,29 @@ public class DuccJobSubmit
/*
* adjust driver and process jvm args
*/
- adjust_jvm_args(jobRequestProperties);
+ boolean ja0 = jobRequestProperties.containsKey(UiOption.JvmArgs.pname());
+ boolean jad = jobRequestProperties.containsKey(UiOption.DriverJvmArgs.pname());
+ boolean jap = jobRequestProperties.containsKey(UiOption.ProcessJvmArgs.pname());
+
+ if(ja0 && jad) {
+ throw new IllegalArgumentException("Conflict: cannot specify both "+UiOption.JvmArgs.pname()+" and "+UiOption.DriverJvmArgs.pname());
+ }
+ if(ja0 && jap) {
+ throw new IllegalArgumentException("Conflict: cannot specify both "+UiOption.JvmArgs.pname()+" and "+UiOption.ProcessJvmArgs.pname());
+ }
+
+ if(ja0) {
+ adjust_specific_jvm_args(DuccPropertiesResolver.ducc_submit_driver_jvm_args, UiOption.JvmArgs);
+ }
+ else {
+ if(jad || jap) {
+ adjust_specific_jvm_args(DuccPropertiesResolver.ducc_submit_driver_jvm_args, UiOption.DriverJvmArgs);
+ adjust_specific_jvm_args(DuccPropertiesResolver.ducc_submit_process_jvm_args, UiOption.ProcessJvmArgs);
+ }
+ else {
+ adjust_specific_jvm_args(DuccPropertiesResolver.ducc_submit_driver_jvm_args, UiOption.JvmArgs);
+ }
+ }
/*
* identify invoker
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccManagedReservationSubmit.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccManagedReservationSubmit.java?rev=1464216&r1=1464215&r2=1464216&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccManagedReservationSubmit.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccManagedReservationSubmit.java Wed Apr 3 22:03:35 2013
@@ -41,13 +41,13 @@ public class DuccManagedReservationSubmi
private ServiceRequestProperties serviceRequestProperties;
- private UiOption[] opts = new UiOption[] {
+ private UiOption[] opts_release = new UiOption[] {
UiOption.Help,
UiOption.Debug,
UiOption.Description,
+ UiOption.Environment,
UiOption.LogDirectory,
UiOption.ProcessAttachConsole,
- UiOption.ProcessEnvironment,
UiOption.ProcessExecutable,
UiOption.ProcessExecutableArgs,
UiOption.ProcessFailuresLimit,
@@ -59,6 +59,26 @@ public class DuccManagedReservationSubmi
UiOption.CancelManagedReservationOnInterrupt,
};
+ private UiOption[] opts_beta = new UiOption[] {
+ UiOption.Help,
+ UiOption.Debug,
+ UiOption.Description,
+ UiOption.Environment,
+ UiOption.LogDirectory,
+ UiOption.ProcessAttachConsole,
+ UiOption.ProcessEnvironment,
+ UiOption.ProcessExecutable,
+ UiOption.ProcessExecutableArgs,
+ UiOption.ProcessFailuresLimit,
+ UiOption.ProcessMemorySize,
+ UiOption.SchedulingClass,
+ UiOption.Specification,
+ UiOption.WorkingDirectory,
+ UiOption.WaitForCompletion,
+ UiOption.CancelManagedReservationOnInterrupt,
+ };
+
+ private UiOption[] opts = opts_release;
public DuccManagedReservationSubmit(String[] args)
throws Exception
@@ -81,7 +101,11 @@ public class DuccManagedReservationSubmi
public DuccManagedReservationSubmit(String[] args, IDuccCallback consoleCb)
throws Exception
{
- serviceRequestProperties = new ServiceRequestProperties();
+ serviceRequestProperties = new ServiceRequestProperties();
+ init();
+ if(DuccUiUtilities.isSupportedBeta()) {
+ opts = opts_beta;
+ }
init(this.getClass().getName(), opts, args, serviceRequestProperties, or_host, or_port, "or", consoleCb);
}
@@ -89,7 +113,11 @@ public class DuccManagedReservationSubmi
throws Exception
{
String[] arg_array = args.toArray(new String[args.size()]);
- serviceRequestProperties = new ServiceRequestProperties();
+ serviceRequestProperties = new ServiceRequestProperties();
+ init();
+ if(DuccUiUtilities.isSupportedBeta()) {
+ opts = opts_beta;
+ }
init(this.getClass().getName(), opts, arg_array, serviceRequestProperties, or_host, or_port, "or", consoleCb);
}
@@ -103,6 +131,10 @@ public class DuccManagedReservationSubmi
Object v = props.get(k);
serviceRequestProperties.put(k, v);
}
+ init();
+ if(DuccUiUtilities.isSupportedBeta()) {
+ opts = opts_beta;
+ }
init(this.getClass().getName(), opts, null, serviceRequestProperties, or_host, or_port, "or", consoleCb);
}
@@ -118,8 +150,28 @@ public class DuccManagedReservationSubmi
/*
* set DUCC_LD_LIBRARY_PATH in process environment
*/
- adjustLdLibraryPath(serviceRequestProperties, UiOption.ProcessEnvironment.pname());
-
+ boolean ev0 = serviceRequestProperties.containsKey(UiOption.Environment.pname());
+ boolean evp = serviceRequestProperties.containsKey(UiOption.ProcessEnvironment.pname());
+ if(ev0 && evp) {
+ throw new IllegalArgumentException("Conflict: cannot specify both "+UiOption.Environment.pname()+" and "+UiOption.ProcessEnvironment.pname());
+ }
+ if(ev0) {
+ if (!DuccUiUtilities.ducc_environment(this, serviceRequestProperties, UiOption.Environment.pname())) {
+ return false;
+ }
+ }
+ else {
+ if(evp) {
+ if (!DuccUiUtilities.ducc_environment(this,serviceRequestProperties, UiOption.ProcessEnvironment.pname())) {
+ return false;
+ }
+ }
+ else {
+ if (!DuccUiUtilities.ducc_environment(this, serviceRequestProperties, UiOption.Environment.pname())) {
+ return false;
+ }
+ }
+ }
SubmitServiceDuccEvent ev = new SubmitServiceDuccEvent(serviceRequestProperties);
SubmitServiceReplyDuccEvent reply = null;
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceApi.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceApi.java?rev=1464216&r1=1464215&r2=1464216&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceApi.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceApi.java Wed Apr 3 22:03:35 2013
@@ -50,7 +50,7 @@ public class DuccServiceApi
String endpoint = null;
IDuccCallback callback = null;
- UiOption[] registration_options = {
+ UiOption[] registration_options_release = {
UiOption.Help,
UiOption.Debug,
UiOption.Description,
@@ -58,6 +58,39 @@ public class DuccServiceApi
UiOption.LogDirectory,
UiOption.WorkingDirectory,
UiOption.Jvm,
+ UiOption.JvmArgs,
+ UiOption.Classpath,
+ UiOption.Environment,
+ UiOption.ProcessMemorySize,
+ UiOption.ProcessDD,
+ UiOption.ProcessFailuresLimit,
+ UiOption.ClasspathOrder,
+ // UiOption.Specification // not used for registration
+ UiOption.ServiceDependency,
+ UiOption.ServiceRequestEndpoint,
+ UiOption.ServiceLinger,
+ UiOption.ServicePingClass,
+ UiOption.ServicePingClasspath,
+ UiOption.ServicePingJvmArgs,
+ UiOption.ServicePingTimeout,
+ UiOption.ServicePingDoLog,
+
+ UiOption.Register,
+ UiOption.Autostart,
+ UiOption.Instances,
+ };
+
+ UiOption[] registration_options_beta = {
+ UiOption.Help,
+ UiOption.Debug,
+ UiOption.Description,
+ UiOption.SchedulingClass,
+ UiOption.LogDirectory,
+ UiOption.WorkingDirectory,
+ UiOption.Jvm,
+ UiOption.JvmArgs,
+ UiOption.Classpath,
+ UiOption.Environment,
UiOption.ProcessJvmArgs,
UiOption.ProcessClasspath,
UiOption.ProcessEnvironment,
@@ -79,7 +112,9 @@ public class DuccServiceApi
UiOption.Autostart,
UiOption.Instances,
};
-
+
+ UiOption[] registration_options = registration_options_release;
+
UiOption[] unregister_options = {
UiOption.Help,
UiOption.Debug,
@@ -206,8 +241,12 @@ public class DuccServiceApi
String extractEndpoint(Properties jvmargs)
{
// If claspath is not specified, pick it up from the submitter's environment
- String classpath = cli_props.getStringProperty(UiOption.ProcessClasspath.pname(), System.getProperty("java.class.path"));
- cli_props.setProperty(UiOption.ProcessClasspath.pname(), classpath);
+ String key_cp = UiOption.ProcessClasspath.pname();
+ if ( cli_props.containsKey(UiOption.Classpath.pname()) ) {
+ key_cp = UiOption.Classpath.pname();
+ }
+ String classpath = cli_props.getStringProperty(key_cp, System.getProperty("java.class.path"));
+ cli_props.setProperty(key_cp, classpath);
// No endpoint, resolve from the DD.
String dd = cli_props.getStringProperty(UiOption.ProcessDD.pname()); // will throw if can't find the prop
@@ -227,12 +266,20 @@ public class DuccServiceApi
throws Exception
{
DuccProperties dp = new DuccProperties();
+ init();
+ if(DuccUiUtilities.isSupportedBeta()) {
+ registration_options = registration_options_beta;
+ }
init(this.getClass().getName(), registration_options, args, dp, sm_host, sm_port, "sm", callback, "services");
//
// Now: get jvm args and resolve placeholders, in particular, the broker url
//
- String jvmarg_string = cli_props.getProperty(UiOption.ProcessJvmArgs.pname());
+ String key_ja = UiOption.ProcessJvmArgs.pname();
+ if ( cli_props.containsKey(UiOption.JvmArgs.pname()) ) {
+ key_ja = UiOption.JvmArgs.pname();
+ }
+ String jvmarg_string = cli_props.getProperty(key_ja);
Properties jvmargs = DuccUiUtilities.jvmArgsToProperties(jvmarg_string);
DuccUiUtilities.resolvePropertiesPlaceholders(cli_props, jvmargs);
@@ -259,8 +306,12 @@ public class DuccServiceApi
} else if ( endpoint.startsWith(ServiceType.UimaAs.decode()) ) {
// Infer the classpath (DuccProperties will return the default if the value isn't found.)
- String classpath = cli_props.getStringProperty(UiOption.ProcessClasspath.pname(), System.getProperty("java.class.path"));
- cli_props.setProperty(UiOption.ProcessClasspath.pname(), classpath);
+ String key_cp = UiOption.ProcessClasspath.pname();
+ if ( cli_props.containsKey(UiOption.Classpath.pname()) ) {
+ key_cp = UiOption.Classpath.pname();
+ }
+ String classpath = cli_props.getStringProperty(key_cp, System.getProperty("java.class.path"));
+ cli_props.setProperty(key_cp, classpath);
// Given ep must match inferred ep. Use case: an application is wrapping DuccServiceApi and has to construct
// the endpoint as well. The app passes it in and we insure that the constructed endpoint matches the one
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceSubmit.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceSubmit.java?rev=1464216&r1=1464215&r2=1464216&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceSubmit.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceSubmit.java Wed Apr 3 22:03:35 2013
@@ -43,7 +43,7 @@ public class DuccServiceSubmit
static String or_port = "ducc.orchestrator.http.port";
static String or_host = "ducc.orchestrator.node";
- UiOption[] opts = new UiOption[] {
+ UiOption[] opts_release = new UiOption[] {
UiOption.Help,
UiOption.Debug,
UiOption.Description,
@@ -51,6 +51,35 @@ public class DuccServiceSubmit
UiOption.LogDirectory,
UiOption.WorkingDirectory,
UiOption.Jvm,
+ UiOption.JvmArgs,
+ UiOption.Classpath,
+ UiOption.Environment,
+ UiOption.ProcessMemorySize,
+ UiOption.ProcessDD,
+ UiOption.ProcessFailuresLimit,
+ UiOption.ClasspathOrder,
+ UiOption.Specification,
+ UiOption.ServiceDependency,
+ UiOption.ServiceRequestEndpoint,
+ UiOption.ServiceLinger,
+ UiOption.ServicePingClass,
+ UiOption.ServicePingClasspath,
+ UiOption.ServicePingJvmArgs,
+ UiOption.ServicePingTimeout,
+ UiOption.ServicePingDoLog,
+ };
+
+ UiOption[] opts_beta = new UiOption[] {
+ UiOption.Help,
+ UiOption.Debug,
+ UiOption.Description,
+ UiOption.SchedulingClass,
+ UiOption.LogDirectory,
+ UiOption.WorkingDirectory,
+ UiOption.Jvm,
+ UiOption.JvmArgs,
+ UiOption.Classpath,
+ UiOption.Environment,
UiOption.ProcessJvmArgs,
UiOption.ProcessClasspath,
UiOption.ProcessEnvironment,
@@ -68,17 +97,27 @@ public class DuccServiceSubmit
UiOption.ServicePingTimeout,
UiOption.ServicePingDoLog,
};
-
+
+ UiOption[] opts = opts_release;
+
public DuccServiceSubmit(ArrayList<String> args)
throws Exception
{
String[] arg_array = args.toArray(new String[args.size()]);
+ init();
+ if(DuccUiUtilities.isSupportedBeta()) {
+ opts = opts_beta;
+ }
init(this.getClass().getName(), opts, arg_array, requestProperties, or_host, or_port, "or", null, "services");
}
public DuccServiceSubmit(String[] args)
throws Exception
{
+ init();
+ if(DuccUiUtilities.isSupportedBeta()) {
+ opts = opts_beta;
+ }
init(this.getClass().getName(), opts, args, requestProperties, or_host, or_port, "or", null, "services");
}
@@ -89,6 +128,10 @@ public class DuccServiceSubmit
Object v = props.get(k);
requestProperties.put(k, v);
}
+ init();
+ if(DuccUiUtilities.isSupportedBeta()) {
+ opts = opts_beta;
+ }
init(this.getClass().getName(), opts, null, requestProperties, or_host, or_port, "or", null, "services");
}
@@ -127,7 +170,11 @@ public class DuccServiceSubmit
public boolean execute()
throws Exception
{
- String jvmarg_string = (String) requestProperties.get(UiOption.ProcessJvmArgs.pname());
+ String key_ja = UiOption.ProcessJvmArgs.pname();
+ if ( cli_props.containsKey(UiOption.JvmArgs.pname()) ) {
+ key_ja = UiOption.JvmArgs.pname();
+ }
+ String jvmarg_string = (String) requestProperties.get(key_ja);
Properties jvmargs = DuccUiUtilities.jvmArgsToProperties(jvmarg_string);
ServiceDeploymentType deploymentType = null;
@@ -194,7 +241,11 @@ public class DuccServiceSubmit
/*
* set DUCC_LD_LIBRARY_PATH in process environment
*/
- if (!DuccUiUtilities.ducc_environment(this, requestProperties, UiOption.ProcessEnvironment.pname())) {
+ String key_ev = UiOption.ProcessEnvironment.pname();
+ if ( cli_props.containsKey(UiOption.Environment.pname()) ) {
+ key_ev = UiOption.Environment.pname();
+ }
+ if (!DuccUiUtilities.ducc_environment(this, requestProperties, key_ev)) {
return false;
}
requestProperties.put(UiOption.ProcessThreadCount.pname(), "1"); // enforce this - OR will complain if it's missing
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccUiUtilities.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccUiUtilities.java?rev=1464216&r1=1464215&r2=1464216&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccUiUtilities.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccUiUtilities.java Wed Apr 3 22:03:35 2013
@@ -46,7 +46,19 @@ import org.w3c.dom.NodeList;
public class DuccUiUtilities {
-
+
+ public static boolean isSupportedBeta() {
+ boolean retVal = false;
+ String key = DuccPropertiesResolver.ducc_submit_beta;
+ String value = DuccPropertiesResolver.getInstance().getProperty(key);
+ if(value != null) {
+ if(value.equalsIgnoreCase("on")) {
+ retVal = true;
+ }
+ }
+ return retVal;
+ }
+
public static String getUser() {
String user = System.getProperty("user.name");
String runmode = DuccPropertiesResolver.getInstance().getProperty(DuccPropertiesResolver.ducc_runmode);
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IUiOptions.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IUiOptions.java?rev=1464216&r1=1464215&r2=1464216&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IUiOptions.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IUiOptions.java Wed Apr 3 22:03:35 2013
@@ -90,6 +90,17 @@ public interface IUiOptions
public boolean required() { return false; }
},
+ Classpath {
+ public String pname() { return JobSpecificationProperties.key_classpath; }
+ public String description() { return "Classpath for the Job. Default is current classpath."; }
+ public String argname() { return "java classpath"; }
+ public String example() { return null; }
+ public String deflt() { return null; }
+ public String label() { return "ClassPath"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
ClasspathOrder {
public String pname() { return JobSpecificationProperties.key_classpath_order; }
public String argname() { return ClasspathOrderParms.UserBeforeDucc.name() + " or " + ClasspathOrderParms.DuccBeforeUser.name(); }
@@ -220,8 +231,19 @@ public interface IUiOptions
public String label() { return "DriverJvmArgs"; }
public boolean multiargs() { return false; }
public boolean required() { return false; }
- },
-
+ },
+
+ Environment {
+ public String pname() { return JobSpecificationProperties.key_environment; }
+ public String argname() { return "env vars"; }
+ public String description() { return "Blank-delimeted list of environment variables."; }
+ public String example() { return "\"TERM=xterm DISPLAY=me.org.net:1.0\""; }
+ public String deflt() { return null; }
+ public String label() { return "Environment"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
Help {
public String pname() { return "help"; }
public String argname() { return null; }
@@ -253,8 +275,19 @@ public interface IUiOptions
public String label() { return null; }
public boolean multiargs() { return false; }
public boolean required() { return true; }
- },
-
+ },
+
+ JvmArgs {
+ public String pname() { return JobSpecificationProperties.key_jvm_args; }
+ public String argname() { return "jvm arguments"; }
+ public String description() { return "Blank-delimeted list of JVM Arguments passed to the job driver."; }
+ public String example() { return "-Xmx100M -DMYVAR=foo"; }
+ public String deflt() { return null; }
+ public String label() { return "JvmArgs"; }
+ public boolean multiargs() { return false; }
+ public boolean required() { return false; }
+ },
+
ManagedReservationId {
public String pname() { return JobRequestProperties.key_id; }
public String argname() { return "string"; }
@@ -520,7 +553,6 @@ public interface IUiOptions
public boolean required() { return false; }
},
-
ProcessDescriptorCC {
public String pname() { return JobSpecificationProperties.key_process_descriptor_CC; }
public String description() { return "Process CAS Consumer for aggregate."; }
@@ -565,8 +597,6 @@ public interface IUiOptions
public boolean required() { return false; }
},
-
-
ProcessDD {
public String pname() { return JobSpecificationProperties.key_process_DD; }
public String description() { return "Process deployment descriptor (mutually exclusive with CM+AE+CC)."; }
@@ -589,7 +619,6 @@ public interface IUiOptions
public boolean required() { return false; }
},
-
ProcessEnvironment {
public String pname() { return JobSpecificationProperties.key_process_environment; }
public String argname() { return "environment-var-list"; }
@@ -634,7 +663,6 @@ public interface IUiOptions
public boolean required() { return false; }
},
-
ProcessInitializationFailuresCap {
public String pname() { return JobSpecificationProperties.key_process_initialization_failures_cap; }
public String description() { return "Maximum number of independent job process initialization failures (i.e. System.exit(), kill-15...) before the number of Job Processes is capped at the number in state Running currently. Default is " + deflt() + "."; }
@@ -657,7 +685,6 @@ public interface IUiOptions
public boolean required() { return false; }
},
-
ProcessJvmArgs {
public String pname() { return JobSpecificationProperties.key_process_jvm_args; }
public String argname() { return "jvm arguments"; }
@@ -669,7 +696,6 @@ public interface IUiOptions
public boolean required() { return false; }
},
-
ProcessMemorySize {
public String pname() { return JobSpecificationProperties.key_process_memory_size; }
public String argname() { return "size-in-GB"; }
@@ -805,7 +831,6 @@ public interface IUiOptions
public boolean required() { return false; }
},
-
Signature {
// generated, not public
public String pname() { return JobSpecificationProperties.key_signature; }
@@ -829,7 +854,6 @@ public interface IUiOptions
public boolean required() { return false; }
},
-
SubmitErrors {
// generated, not public
public String pname() { return JobSpecificationProperties.key_submit_errors; }
@@ -842,7 +866,6 @@ public interface IUiOptions
public boolean required() { return false; }
},
-
SubmitWarnings {
// generated, not public
public String pname() { return JobSpecificationProperties.key_submit_warnings; }
@@ -855,7 +878,6 @@ public interface IUiOptions
public boolean required() { return false; }
},
-
Timestamp {
public String pname() { return "timestamp"; }
public String argname() { return null; }
@@ -867,7 +889,6 @@ public interface IUiOptions
public boolean required() { return false; }
},
-
Unregister {
public String pname() { return "unregister" ; }
public String argname() { return "service-id-or-endpoint" ; }
@@ -901,7 +922,6 @@ public interface IUiOptions
public boolean required() { return false; }
},
-
WaitForCompletion {
public String pname() { return "wait_for_completion"; }
public String argname() { return null; }
@@ -939,6 +959,41 @@ public interface IUiOptions
if ( example() == null ) return description();
return description() + "\nexample: " + example();
}
+
+ // Beta options helper functions
+
+ public UiOption[] getBetaOptions() {
+ UiOption[] list = { DriverClasspath,
+ DriverEnvironment,
+ DriverJvmArgs,
+ ProcessClasspath,
+ ProcessEnvironment,
+ ProcessJvmArgs,
+ };
+ return list;
+ }
+
+ public boolean isBetaOption(String pname) {
+ boolean retVal = false;
+ if(pname != null) {
+ UiOption[] list = getBetaOptions();
+ for(UiOption option : list) {
+ if(pname.equals(option.pname())) {
+ retVal = true;
+ }
+ }
+ }
+ return retVal;
+ }
+
+ public boolean isBetaOption(UiOption option) {
+ boolean retVal = false;
+ if(option != null) {
+ retVal = isBetaOption(option.pname());
+ }
+ return retVal;
+ }
+
};
public enum ClasspathOrderParms