# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright (C) 2012 Yahoo! Inc. 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. import os import re import sys # These also have meaning outside python, # ie in the pkg/pip listings so update there also! # FIXME: Delete UBUNTU11 = "ubuntu-oneiric" RHEL6 = "rhel-6" FEDORA16 = "fedora-16" # What this program is called PROG_NICE_NAME = "DEVSTACKpy" # These 2 identify the json post and pre install sections PRE_INSTALL = 'pre-install' POST_INSTALL = 'post-install' # Ip version constants for network ip detection IPV4 = 'IPv4' IPV6 = 'IPv6' #how long to wait for a service to startup WAIT_ALIVE_SECS = 5 # Component name mappings NOVA = "nova" NOVA_CLIENT = 'nova-client' GLANCE = "glance" QUANTUM = "quantum-server" QUANTUM_CLIENT = 'quantum-client' SWIFT = "swift" HORIZON = "horizon" KEYSTONE = "keystone" KEYSTONE_CLIENT = 'keystone-client' DB = "db" RABBIT = "rabbit" NOVNC = 'n-vnc' XVNC = 'xvnc' MELANGE = 'melange' MELANGE_CLIENT = 'melange-client' COMPONENT_NAMES = [ NOVA, NOVA_CLIENT, GLANCE, QUANTUM, QUANTUM_CLIENT, SWIFT, HORIZON, KEYSTONE, KEYSTONE_CLIENT, DB, RABBIT, NOVNC, MELANGE, MELANGE_CLIENT, ] # When a component is asked for it may # need another component, that dependency # mapping is listed here. A topological sort # will be applied to determine the exact order. # COMPONENT_DEPENDENCIES = { # DB: [], # KEYSTONE_CLIENT: [], # RABBIT: [], # GLANCE: [KEYSTONE, DB], # KEYSTONE: [DB, KEYSTONE_CLIENT], # NOVA: [KEYSTONE, GLANCE, DB, RABBIT, NOVA_CLIENT], # SWIFT: [KEYSTONE_CLIENT], # NOVA_CLIENT: [], # # Horizon depends on glances client (which should really be a client package) # HORIZON: [KEYSTONE_CLIENT, GLANCE, NOVA_CLIENT, QUANTUM_CLIENT], # # More of quantums deps come from its module function get_dependencies # QUANTUM: [], # NOVNC: [NOVA], # QUANTUM_CLIENT: [], # MELANGE: [DB], # MELANGE_CLIENT: [], # } # Different run types supported RUN_TYPE_FORK = "FORK" RUN_TYPE_UPSTART = "UPSTART" RUN_TYPE_SCREEN = "SCREEN" RUN_TYPE_DEF = RUN_TYPE_FORK RUN_TYPES_KNOWN = [RUN_TYPE_UPSTART, RUN_TYPE_FORK, RUN_TYPE_SCREEN, RUN_TYPE_DEF] # Used to find the type in trace files RUN_TYPE_TYPE = "TYPE" # Default subdirs of a components root directory COMPONENT_TRACE_DIR = "traces" COMPONENT_APP_DIR = "app" COMPONENT_CONFIG_DIR = "config" # RC files generated / used RC_FN_TEMPL = "os-%s.rc" LOCALRC_FN = RC_FN_TEMPL % ('local') OSRC_FN = RC_FN_TEMPL % ('core') # Program # actions INSTALL = "install" UNINSTALL = "uninstall" START = "start" STOP = "stop" ACTIONS = [INSTALL, UNINSTALL, START, STOP] # Where the configs and templates should be at. STACK_BIN_DIR = os.path.abspath(os.path.dirname(sys.argv[0])) STACK_CONFIG_DIR = os.path.join(STACK_BIN_DIR, "conf") STACK_TEMPLATE_DIR = os.path.join(STACK_CONFIG_DIR, "templates") STACK_PKG_DIR = os.path.join(STACK_CONFIG_DIR, "pkgs") STACK_PIP_DIR = os.path.join(STACK_CONFIG_DIR, "pips") STACK_CONFIG_LOCATION = os.path.join(STACK_CONFIG_DIR, "stack.ini")