/*
* Copyright (c) 2013 GigaSpaces Technologies Ltd. All rights reserved
*
* 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.
*/
package beans.config;
import beans.GsMailer;
import utils.Utils;
import java.io.File;
import java.util.LinkedList;
import java.util.List;
/**
* User: guym
* Date: 12/13/12
* Time: 1:32 PM
*/
public class Conf {
public ApplicationConfiguration application = new ApplicationConfiguration();
public SmtpConf smtp = new SmtpConf();
public Mails mails = new Mails();
public AsyncExecutionConf asyncExecution = new AsyncExecutionConf();
public ResourceConfig resources = new ResourceConfig();
// who is sending the mail?
public GsMailer.Mailer mailer = new GsMailer.Mailer();
@Config( ignoreNullValues = true )
public String demoUserEmailSuffix = "_demo@gigaspaces.com";
public ServerConfig server = new ServerConfig();
public FeaturesConfig features = new FeaturesConfig();
public MailChimpDetails mailChimpDetails = new MailChimpDetails();
public SettingsConfig settings = new SettingsConfig();
@Config(ignoreNullValues = true)
public boolean sendErrorEmails = false;
@Config( playKey = "spring.context")
public String springContext = null;
public CloudifyConfiguration cloudify = new CloudifyConfiguration();
public String mixpanelApiKey = null;
@Config(playKey = "application.secret")
public String applicationSecret;
public UiConf uiConf = new UiConf();
public static class SettingsConfig{
@Config( ignoreNullValues = true )
public boolean expireSession = false; // do not use the session expired mechanism.
public InitialData initialData = new InitialData();
public boolean isRecoverExecutions = true;
@Config(ignoreNullValues = true)
public long stopTimeout = Utils.parseTimeToMillis( "30s" );
public Boolean globalSecurityCheck = false; // todo : switch this on once feature is completed.
public TimeoutValues timeoutValues = new TimeoutValues();
public String applicationName = "Cloudify-Widget";
}
// conversion widget extensions for registered users.
public static class TimeoutValues{
@Config(ignoreNullValues = true)
public long registered = Utils.parseTimeToMillis("7d");
@Config(ignoreNullValues = true)
public long verified = Utils.parseTimeToMillis("30d");
}
public static class InitialData{
@Config( ignoreNullValues = true )
public boolean load = true ;
public String defaultPassword = "Initial4657"; // if we need to create users, we will use this password by default.
@Config( ignoreNullValues = true )
public boolean override = false; // true iff we want to write over existing objects
}
public static class FeaturesConfigItem {
public String users = ".*"; // all users by default
@Config( ignoreNullValues = true )
public boolean on = false ;
public FeaturesConfigItem setUsers(String users) {
this.users = users;
return this;
}
public FeaturesConfigItem setOn(boolean on) {
this.on = on;
return this;
}
}
public static class FeaturesConfig {
public FeaturesConfigItem socialLogin = new FeaturesConfigItem();
public FeaturesConfigItem signup = new FeaturesConfigItem().setOn(true);
public FeaturesConfigItem autoGeneratedRecipeName = new FeaturesConfigItem();
}
public static class CloudifyConfiguration{
public String version = "2.7.0-Cloudify-ga";
public long deployWatchDogProcessTimeoutMillis = Utils.parseTimeToMillis( "10mn" );
public long bootstrapCloudWatchDogProcessTimeoutMillis = Utils.parseTimeToMillis( "10mn" );
// time from "play" until we decide something is wrong and we send error
public long deployTimeoutError = Utils.parseTimeToMillis("90mn");
public File deployScript=Utils.getFileByRelativePath( "/bin/deployer.sh" );
public File uninstallServiceScript = Utils.getFileByRelativePath( "/bin/uninstall_service.sh" );
public File uninstallApplicationScript = Utils.getFileByRelativePath( "/bin/uninstall_application.sh" );
public String removeOutputLines = "";
public String removeOutputString = "";
@Config(ignoreNullValues = true)
public long verifyLoginUserIdTimeout = Utils.parseTimeToMillis("20s");
}
public static class Mails{
public GsMailer.Mailer poolEmpty = new GsMailer.Mailer().setEmail("widget@cloudifysource.org").setName("Cloudify Widget Team");
public GsMailer.Mailer registrationCc = new GsMailer.Mailer();
public GsMailer.Mailer registrationFrom = new GsMailer.Mailer().setEmail("appcatalog@cloudifysource.org").setName("Application Catalog");
public GsMailer.Mailer logErrors = new GsMailer.Mailer();
public UpgradeLogMail changeLog = new UpgradeLogMail();
}
public static class UpgradeLogMail{
public File file = Utils.getFileByRelativePath("/automatic_changelog");
public List<GsMailer.Mailer> addresses = new LinkedList<GsMailer.Mailer>();
}
public static class ResourceConfig {
public File recipesBaseDir = new File(new File(System.getProperty("java.io.tmpdir"), "cloudify-widget"), "recipes");
public File cloudProvidersBaseDir = new File(new File(System.getProperty("java.io.tmpdir"), "cloudify-widget"),"cloud-providers");
}
public ServerConfig getServer(){
return server;
}
public MailChimpDetails getMailChimpDetails() {
return mailChimpDetails;
}
public static class MailChimpDetails{
public String apiKey = null;
public String listId = null;
public String getApiKey() {
return apiKey;
}
public void setApiKey(String apiKey) {
this.apiKey = apiKey;
}
public String getListId() {
return listId;
}
public void setListId(String listId) {
this.listId = listId;
}
}
public static class AsyncExecutionConf {
public File newScriptsDir = Utils.getFileByRelativePath("node_scripts/_scripts/new");
public File executingScriptsDir = Utils.getFileByRelativePath("node_scripts/_scripts/executing");
public long statusPollingIntervalMillis = Utils.parseTimeToMillis("10s");
}
}