package com.sixsq.slipstream.connector;

/*
 * +=================================================================+
 * SlipStream Server (WAR)
 * =====
 * Copyright (C) 2013 SixSq Sarl (sixsq.com)
 * =====
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * -=================================================================-
 */

import com.sixsq.slipstream.exceptions.ValidationException;
import com.sixsq.slipstream.persistence.ParameterCategory;
import com.sixsq.slipstream.persistence.ParameterType;
import com.sixsq.slipstream.persistence.UserParameter;

import java.util.Arrays;
import java.util.List;

public class ExecutionControlUserParametersFactory extends
		UserParametersFactoryBase {

	public static final String VERBOSITY_LEVEL = "Verbosity Level";
	public static final String VERBOSITY_LEVEL_DEFAULT = "0";
	public static final String CATEGORY = ParameterCategory.General.toString();

	public ExecutionControlUserParametersFactory() throws ValidationException {
		super(CATEGORY);
	}

	// Don't add quota parameter for this section
	@Override
	protected void initQuotaParameter()	throws ValidationException {
		return;
	}

	@Override
	protected void initReferenceParameters() throws ValidationException {

		List<String> clouds = extractCloudNames(ConnectorFactory.getConnectors());
		putMandatoryEnumParameter(
				UserParametersFactoryBase.DEFAULT_CLOUD_SERVICE_PARAMETER_NAME,
				"Default Cloud",
				clouds, "",
				"Select the cloud that you want to use as the default.",
				10);

		putMandatoryEnumParameter(
				UserParameter.KEY_KEEP_RUNNING,
				"Keep running after deployment",
				UserParameter.getKeepRunningOptions(),
				UserParameter.KEEP_RUNNING_DEFAULT,
				"Here you can define if and when SlipStream should leave the application running after performing the deployment. <br/>"
						+ "<code>On success</code> is useful for production deployments or long tests. </br>"
						+ "<code>On Error</code> might be useful so that resources are consumed only when debugging is needed. <br/>"
						+ "<code>Never</code> ensures that SlipStream automatically terminates the application after performing the deployment. <br/>"
						+ "Note: This parameter doesn't apply to <code>mutable deployment</code> Runs and to <code>build image</code> Runs.",
				15);

		String[] _options = { VERBOSITY_LEVEL_DEFAULT, "1", "2", "3" };
		List<String> options = Arrays.asList(_options);
		putMandatoryEnumParameter(
				VERBOSITY_LEVEL,
				"Level of verbosity",
				options, VERBOSITY_LEVEL_DEFAULT,
				"0 - Actions,  1 - Steps,  2 - Details data,  3 - Debugging",
				30);

		putMandatoryParameter(
				UserParameter.KEY_TIMEOUT,
				"Execution timeout (in minutes)",
				"30",
				ParameterType.String,
				"If the execution stays in a transitional state for more than the value of this timeout, the execution is forcefully terminated.",
				40);

		putMandatoryParameter(
				SSHKEY_PARAMETER_NAME,
				"SSH Public Key(s) (one per line)",
				ParameterType.RestrictedText,
				"Warning: Some clouds may take into account only the first key until SlipStream bootstraps the machine.",
				50);

		putMandatoryEnumParameter(
				UserParameter.KEY_MAIL_USAGE,
				"Receive a mail with cloud usages",
				UserParameter.getMailUsageOptions(),
				UserParameter.MAIL_USAGE_DEFAULT,
				"Mail detailing your usage on your clouds",
				60);


	}

}

@@ -3688,29 +3688,9 @@
 %09%09%09%22
-Receive a mail with c
+C
 loud
@@ -3695,17 +3695,22 @@
 ud usage
-s
+ email
 %22,%0A%09%09%09%09U
@@ -3792,36 +3792,49 @@
 %09%09%09%22
-Mail detailing your usage on
+Frequency for receiving emails concerning
  you
@@ -3840,17 +3840,23 @@
 ur cloud
-s
+ usage.
 %22,%0A%09%09%09%096

update usage email parameter descriptions