Top Level Namespace

Defined Under Namespace

Modules: AppScaleTools, CommonFunctions, EncryptionHelper, GodInterface, ParseArgs, RemoteLogging, UsageText, VMTools Classes: AdvancedNode, AppControllerClient, AppEngineConfigException, AppScaleException, BadCommandLineArgException, BadConfigurationException, InfrastructureException, Node, NodeLayout, SimpleNode, UserAppClient

Constant Summary collapse

MAX_VM_CREATION_TIME =

The maximum amount of time we should wait for the first node in the system to go from ‘pending’ to ‘running’ and acquire a public IP. Our current VM size is about 10GB, so this means that in Eucalyptus it could take up to 30 minutes to start if the image wasn’t cached.

2700
SLEEP_TIME =

The amount of time to sleep between invocations of ec2-describe-instances when starting up the first node in the system. This should definitely not be lower than 5 seconds, as Eucalyptus 2.0.3 or newer will interpret it as a possible replay attack.

20
IP_REGEX =

The regular expressions to use to find the public and private IPs (or FQDNs in case of EC2).

/\d+\.\d+\.\d+\.\d+/
FQDN_REGEX =
/[\w\d\.\-]+/
IP_OR_FQDN =
/#{IP_REGEX}|#{FQDN_REGEX}/
EC2_ENVIRONMENT_VARIABLES =

When running over a cloud infrastructure, the user must set the following environment variables

["EC2_PRIVATE_KEY", "EC2_CERT", "EC2_SECRET_KEY"] +
["EC2_ACCESS_KEY"]
REQUIRED_EUCA_CREDS_FOR_HYBRID =

When using Eucalyptus in a hybrid cloud deployment, the user must set the following environment variables (prefixed by CLOUDX_, where X is an integer)

["TYPE", "EMI", "S3_URL", "EC2_URL"] + 
["EC2_JVM_ARGS", "EUCALYPTUS_CERT", "EC2_USER_ID"] + EC2_ENVIRONMENT_VARIABLES
REQUIRED_EC2_CREDS_FOR_HYBRID =

When using EC2 in a hybrid cloud deployment, the user must set the following environment variables (prefixed by CLOUDX_, where X is an integer)

["TYPE", "AMI", "S3_URL", "EC2_URL"] +
["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY"] + EC2_ENVIRONMENT_VARIABLES
NO_APP_FOUND =
"The specified App Engine app didn't exist."
FILE_FLAG_NOT_VALID_MSG =
"File must be either a directory or end with .tar.gz"
IPS_FLAG_NOT_A_YAML_MSG =
"YAML file must end with .yaml or .yml"
MIN_FLAG_NOT_A_NUM_MSG =
"Min images must be a positive integer"
MAX_FLAG_NOT_A_NUM_MSG =
"Max images must be a positive integer"
TABLE_FLAG_NOT_IN_SET_MSG =
"Invalid table type. Table must be set to one" +
" of the following: #{VALID_TABLE_TYPES.join(', ')}"
MIN_FLAG_NOT_POSITIVE_MSG =
"Minimum image number must be larger than zero"
MAX_FLAG_NOT_POSITIVE_MSG =
"Maximum image number must be larger than zero"
MAX_SMALLER_THAN_MIN_MSG =
"Maximum image number must be larger than " +
"the minimum image number"
YAML_CONTROL_MSG =
"The provided IP yaml file did not have one IP " +
"address for the controller node"
EC2_USAGE_MSG =
"You did not provide an ips.yaml file, and you" +
" did not provide a machine id."
EC2_IPS_MISSING_MSG =
"You did not provide an ips.yaml or it was empty."
INSTANCE_FLAG_NOT_IN_SET_MSG =
"The instance type you provided was not " + 
"one of the allowed values. Currently we allow m1.large, m1.xlarge, " +
"and c1.xlarge as the instance types."
INFRASTRUCTURE_FLAG_NOT_IN_SET_MSG =
"The infrastructure you provided " + 
"was not one of the allowed values. Currently we allow ec2 and euca " + 
"as the infrastructure types."
DJINN_SERVER_DIED_MSG =
"\nEither the head node was unable to get IP " + 
"addresses for any slave nodes or a bug in the head node's code caused" +
" it to crash. We have left your virtual machines running in case you " +
"wish to submit a bug report or investigate further via " +
"the Troubleshooting page."
RW_REQUIRES_VOLDEMORT_MSG =
"The r and w flags can only be used in " +
"conjunction with the Voldemort database. Please either specify the" +
" Voldemort database to be used or remove the r and w flags."
BACKUP_TAR_EXISTS_MSG =
"The tar file you specified to back up to " + 
"already exists. Please specify a new file name and try again."
BACKUP_NEPTUNE_INFO_EXISTS_MSG =
"The Neptune info file you specified " +
" to back up to already exists. Please specify a new file name and try again."
RESTORE_TAR_NOT_EXISTS_MSG =
"The tar file you specified to back up" + 
" from does not exist. Please specify a new file name and try again."
RESTORE_NEPTUNE_INFO_NOT_EXISTS_MSG =
"The Neptune info file you specified" +
" does not exist. Please specify a new file name and try again."
CONFIG_FILE_NOT_FOUND =
"The configuration file you specified did not exist." +
" Please specify one that exists and try again."
NO_MIN_OR_MAX_WITH_IPS =
"When using the ips flag, the min or max flags " +
"cannot be specified. Please only use either (1) the min and max flags or " +
"(2) the ips flag."
FILE_REGEX =
/\.tar\.gz$/
POS_NUM_REGEX =
/^[1-9]\d*$/
TAR_REGEX =
/\.tar\.gz$/
YAML_REGEX =
/\.ya?ml$/
DEFAULT_DATASTORE =
"cassandra"
USED_SIMPLE_AND_ADVANCED_KEYS =

Programmer: Jonathan Kupferman Updated by Chris Bunch to add hybrid cloud support

"Used both simple and advanced layout roles." +
" Only simple (controller, servers) or advanced (master, appengine, etc) " +
"can be used"
NO_INPUT_YAML_REQUIRES_MIN_IMAGES =
"If no input yaml is specified, " +
"min_images must be specified."
NO_INPUT_YAML_REQUIRES_MAX_IMAGES =
"If no input yaml is specified, " +
"max_images must be specified."
INPUT_YAML_REQUIRED =
"An input yaml file is required for Xen, KVM, and " +
"hybrid cloud deployments"
DUPLICATE_IPS =
"You specified some IP addresses more than once, which is " +
"not allowed in simple deployments."
NO_CONTROLLER =
"No controller was specified"
ONLY_ONE_CONTROLLER =
"Only one controller is allowed"
NODE_ID_REGEX =
/(node|cloud(\d+))-(\d+)/
DEFAULT_NUM_NODES =
1
VALID_ROLES =
[:master, :appengine, :database, :shadow, :open] + 
[:load_balancer, :login, :db_master, :db_slave, :zookeeper, :memcache] +
[:rabbitmq, :rabbitmq_master, :rabbitmq_slave]
GOD_PORT =
"17165"
ADMIN_CAPABILITIES =
["upload_app", "mr_api", "ec2_api", "neptune_api"].join(":")
NO_SSH_KEY_FOUND =
"No SSH key was found that could be used to log in to " +
"your machine."
MALFORMED_YAML =
"The yaml file you provided was malformed. Please correct " +
"any errors in it and try again."
NO_CONFIG_FILE =
"We could not find a valid app.yaml or web.xml file in " +
"your application."
DEFAULT_USERNAME =

The username and password that will be used as the cloud administrator’s credentials if the –test flag are used, which should only be used when developing AppScale (and not in production environments).

"[email protected]"
DEFAULT_PASSWORD =
"aaaaaa"
MAX_FILE_SIZE =
1000000
EMAIL_REGEX =
/\A[[:print:]]+@[[:print:]]+\.[[:print:]]+\Z/
PASSWORD_REGEX =
/\A[[:print:]]{6,}\Z/
CLOUDY_CREDS =
["ec2_access_key", "ec2_secret_key", 
"aws_access_key_id", "aws_secret_access_key", 
"SIMPLEDB_ACCESS_KEY", "SIMPLEDB_SECRET_KEY"]
VER_NUM =
"1.5"
AS_VERSION =
"AppScale Tools, Version #{VER_NUM}, http://appscale.cs.ucsb.edu"
PYTHON_CONFIG =
"app.yaml"
JAVA_CONFIG =
"war/WEB-INF/appengine-web.xml"
SSH_OPTIONS =

When we try to ssh to other machines, we don’t want to be asked for a password (since we always should have the right SSH key present), and we don’t want to be asked to confirm the host’s fingerprint, so set the options for that here.

"-o NumberOfPasswordPrompts=0 -o StrictHostkeyChecking=no"
VALID_TABLE_TYPES =

A list of the databases that AppScale nodes can run, and a list of the cloud infrastructures that we can run over.

["hbase", "hypertable", "mysql", "cassandra", "voldemort"] +
["mongodb", "memcachedb", "scalaris", "simpledb", "redisdb"]
VALID_CLOUD_TYPES =
["ec2", "euca", "hybrid"]
INFINITY =

Some operations use an infinite timeout, and while -1 or 1.0/0 work in older versions of Ruby 1.8.7 (default on Ubuntu Lucid and before), they don’t work in newer versions of Ruby 1.8.7 and Ruby 1.9. Instead, just use a large number, which will work on both.

1000000
NO_TIMEOUT =
1000000
RETRY_ON_FAIL =
true
ABORT_ON_FAIL =
false
LOGS_VERBOSE =

A constant that indicates that verbose logging should be produced.

"high"