/*
 * Copyright 1999-2015 dangdang.com.
 * <p>
 * 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.
 * </p>
 */

package io.elasticjob.cloud.scheduler.config.constants;

/**
 * Cloud配置的常量.
 *
 * @author caohao
 */
public final class CloudConfigurationConstants {
    
    public static final String APP_NAME = "appName";
    
    public static final String BOOTSTRAP_SCRIPT = "bootstrapScript";
    
    public static final String APP_CACHE_ENABLE = "appCacheEnable";
    
    public static final String APP_URL = "appURL";
    
    public static final String EVENT_TRACE_SAMPLING_COUNT = "eventTraceSamplingCount";
    
    public static final String CPU_COUNT = "cpuCount";
    
    public static final String MEMORY_MB = "memoryMB";
    
    public static final String JOB_EXECUTION_TYPE = "jobExecutionType";
    
    public static final String BEAN_NAME = "beanName";
    
    public static final String APPLICATION_CONTEXT = "applicationContext";
    
    
}
