blob: 07b4ce5105aeca3ff93e7b8d175901a005e27a2e [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.brooklyn.entity.chef;
import org.apache.brooklyn.config.ConfigKey;
import org.apache.brooklyn.core.config.ConfigKeys;
import org.apache.brooklyn.core.config.MapConfigKey;
import org.apache.brooklyn.core.config.SetConfigKey;
import org.apache.brooklyn.util.core.flags.SetFromFlag;
import com.google.common.annotations.Beta;
/** {@link ConfigKey}s used to configure the chef driver */
@Beta
public interface ChefConfig {
public static final ConfigKey<String> CHEF_COOKBOOK_PRIMARY_NAME = ConfigKeys.newStringConfigKey("brooklyn.chef.cookbook.primary.name",
"Namespace to use for passing data to Chef and for finding effectors");
@SetFromFlag("cookbook_urls")
public static final MapConfigKey<String> CHEF_COOKBOOK_URLS = new MapConfigKey<String>(String.class, "brooklyn.chef.cookbooksUrls");
@SetFromFlag("converge_twice")
public static final ConfigKey<Boolean> CHEF_RUN_CONVERGE_TWICE = ConfigKeys.newBooleanConfigKey("brooklyn.chef.converge.twice",
"Whether to run converge commands twice if the first one fails; needed in some contexts, e.g. when switching between chef-server and chef-solo mode", false);
@Deprecated /** @deprecated since 0.7.0 use #CHEF_LAUNCH_RUN_LIST */
public static final SetConfigKey<String> CHEF_RUN_LIST = new SetConfigKey<String>(String.class, "brooklyn.chef.runList");
/** typically set from spec, to customize the launch part of the start effector */
@SetFromFlag("launch_run_list")
public static final SetConfigKey<String> CHEF_LAUNCH_RUN_LIST = new SetConfigKey<String>(String.class, "brooklyn.chef.launch.runList");
/** typically set from spec, to customize the launch part of the start effector */
@SetFromFlag("launch_attributes")
public static final MapConfigKey<Object> CHEF_LAUNCH_ATTRIBUTES = new MapConfigKey<Object>(Object.class, "brooklyn.chef.launch.attributes");
public static enum ChefModes {
/** Force use of Chef Solo */
SOLO,
/** Force use of Knife; knife must be installed, and either
* {@link ChefConfig#KNIFE_EXECUTABLE} and {@link ChefConfig#KNIFE_CONFIG_FILE} must be set
* or knife on the path with valid global config set up */
KNIFE,
// TODO server via API
/** Tries {@link #KNIFE} if valid, else {@link #SOLO} */
AUTODETECT
};
@SetFromFlag("chef_mode")
public static final ConfigKey<ChefModes> CHEF_MODE = ConfigKeys.newConfigKey(ChefModes.class, "brooklyn.chef.mode",
"Whether Chef should run in solo mode, knife mode, or auto-detect", ChefModes.AUTODETECT);
// TODO server-url for server via API mode
public static final ConfigKey<String> KNIFE_SETUP_COMMANDS = ConfigKeys.newStringConfigKey("brooklyn.chef.knife.setupCommands",
"An optional set of commands to run on localhost before invoking knife; useful if using ruby version manager for example");
public static final ConfigKey<String> KNIFE_EXECUTABLE = ConfigKeys.newStringConfigKey("brooklyn.chef.knife.executableFile",
"Knife command to run on the Brooklyn machine, including full path; defaults to scanning the path");
public static final ConfigKey<String> KNIFE_CONFIG_FILE = ConfigKeys.newStringConfigKey("brooklyn.chef.knife.configFile",
"Knife config file (typically knife.rb) to use, including full path; defaults to knife default/global config");
@SetFromFlag("chef_node_name")
public static final ConfigKey<String> CHEF_NODE_NAME = ConfigKeys.newStringConfigKey("brooklyn.chef.node.nodeName",
"Node name to register with the chef server for this entity, if using Chef server and a specific node name is desired; "
+ "if supplied ,this must be unique across the nodes Chef Server manages; if not supplied, one will be created if needed");
// for providing some simple (ssh-based) lifecycle operations and checks
@SetFromFlag("pid_file")
public static final ConfigKey<String> PID_FILE = ConfigKeys.newStringConfigKey("brooklyn.chef.lifecycle.pidFile",
"Path to PID file on remote machine, for use in checking running and stopping; may contain wildcards");
@SetFromFlag("service_name")
public static final ConfigKey<String> SERVICE_NAME = ConfigKeys.newStringConfigKey("brooklyn.chef.lifecycle.serviceName",
"Name of OS service this will run as, for use in checking running and stopping");
@SetFromFlag("windows_service_name")
public static final ConfigKey<String> WINDOWS_SERVICE_NAME = ConfigKeys.newStringConfigKey("brooklyn.chef.lifecycle.windowsServiceName",
"Name of OS service this will run as on Windows, if different there, for use in checking running and stopping");
}