lib/boot.rb in forj-0.0.40 vs lib/boot.rb in forj-0.0.41
- old
+ new
@@ -32,64 +32,63 @@
#
# Boot module
#
module Boot
- def boot(blueprint, name, build, build_config,
- branch, boothook, box_name, oConfig)
+ def boot(blueprint, name, build, branch, boothook, box_name, oConfig)
begin
- Logging.fatal(1, 'FORJ account not specified. Did you used `forj setup`, before?') if not oConfig.get('account_name')
+ Logging.fatal(1, 'FORJ account not specified. Did you used `forj setup`, before?') if not oConfig.get(:account_name)
oForjAccount = ForjAccount.new(oConfig)
oForjAccount.ac_load()
# Load Forj account data
- forjAccountFile = File.join($FORJ_ACCOUNTS_PATH, oConfig.get('account_name'))
- oConfig.ExtraLoad(forjAccountFile, :forj_accounts, oConfig.get('account_name'))
+ forjAccountFile = File.join($FORJ_ACCOUNTS_PATH, oConfig.get(:account_name))
+ oConfig.ExtraLoad(forjAccountFile, :forj_accounts, oConfig.get(:account_name))
# Check options and set data
- cloud_provider = oForjAccount.get(:account, :provider, 'hpcloud')
+ cloud_provider = oForjAccount.getAccountData(:account, :provider, 'hpcloud')
if cloud_provider != 'hpcloud'
Logging.fatal(1, "forj setup support only hpcloud. '%s' is currently not supported." % cloud_provider)
end
initial_msg = "booting %s on %s\nCheck log with `tail -f ~/.forj/forj.log`.\nUse --verbose or --debug for more boot status on screen" % [blueprint , cloud_provider]
Logging.high_level_msg(initial_msg) #################
# Initialize defaults
- maestro_url = oConfig.get('maestro_url')
+ maestro_url = oConfig.get(:maestro_url)
- infra_dir = File.expand_path(oConfig.get('infra_repo'))
-
+ infra_dir = File.expand_path(oForjAccount.get(:infra_repo))
+
# Check about infra repo compatibility with forj cli
bBuildInfra = Repositories.infra_rebuild_required?(oConfig, infra_dir)
-
+
# Ask information if needed.
if not Dir.exist?(File.expand_path(infra_dir))
sAsk = 'Your \'%s\' infra directory doesn\'t exist. Do you want to create a new one from Maestro(repo github)/templates/infra (yes/no)?' % [infra_dir]
bBuildInfra=agree(sAsk)
else
Logging.info('Re-using your infra... in \'%s\'' % [infra_dir]) if not bBuildInfra
end
if not Dir.exist?(File.expand_path(infra_dir)) and not bBuildInfra
- Logging.info ('Exiting.')
+ Logging.info('Exiting.')
return
end
# Get FORJ DNS setting
yDNS = rhGet(oForjAccount.hAccountData, :dns)
- Logging.fatal(1, "DNS or domain name are missing. Please execute forj setup %s" % oForjAccount.get(:account, 'name')) if not yDNS
+ Logging.fatal(1, "DNS or domain name are missing. Please execute forj setup %s" % oForjAccount.getAccountData(:account, 'name')) if not yDNS
- branch = oConfig.get('branch') unless branch
+ branch = oConfig.get(:branch) unless branch
# Step Maestro Clone
- if not oConfig.get(:maestro_repo)
+ if not oForjAccount.get(:maestro_repo)
Logging.info('cloning maestro repo from \'%s\'...' % maestro_url)
Repositories.clone_repo(maestro_url)
maestro_repo=File.expand_path('~/.forj/maestro')
else
maestro_repo=File.expand_path(oConfig.get(:maestro_repo))
@@ -105,53 +104,59 @@
end
# Connect to services
oFC=ForjConnection.new(oConfig)
- Logging.info('Configuring network \'%s\'' % [oConfig.get('network')])
+ Logging.info('Configuring network \'%s\'' % [oForjAccount.get('network')])
begin
- network = Network.get_or_create_network(oFC, oConfig.get('network'))
+ network = Network.get_or_create_network(oFC, oForjAccount.get('network'))
subnet = Network.get_or_create_subnet(oFC, network.id, network.name)
- router = Network.get_or_create_router(oFC, network, subnet)
+ Network.get_or_create_router(oFC, network, subnet)
rescue => e
Logging.fatal(1, "Network properly configured is required.", e)
end
- Logging.info('Configuring keypair \'%s\'' % [oForjAccount.get(:credentials, 'keypair_name')])
+ Logging.info('Configuring keypair \'%s\'' % [oForjAccount.get('keypair_name')])
SecurityGroup.hpc_import_key(oForjAccount)
- Logging.info('Configuring Security Group \'%s\'' % [oConfig.get('security_group')])
- security_group = SecurityGroup.get_or_create_security_group(oFC, oConfig.get('security_group'))
- ports = oConfig.get('ports')
+ Logging.info('Configuring Security Group \'%s\'' % [oForjAccount.get('security_group')])
+ security_group = SecurityGroup.get_or_create_security_group(oFC, oForjAccount.get('security_group'))
+ ports = oConfig.get(:ports)
ports.each do |port|
port = port.to_s if port.class != String
- if not /^\d+(-\d+)?$/ =~ port
+ if not (/^\d+(-\d+)?$/ =~ port)
Logging.error("Port '%s' is not valid. Must be <Port> or <PortMin>-<PortMax>" % [port])
else
mPortFound = /^(\d+)(-(\d+))?$/.match(port)
portmin = mPortFound[1]
portmax = (mPortFound[3]) ? (mPortFound[3]) : (portmin)
Network.get_or_create_rule(oFC, security_group.id, 'tcp', portmin, portmax)
end
end
+ # oForjAccount data get are retrieved from the account file under section described in defaults.yaml, as soon as this mapping exist.
+ # If not found, get the data from the local configuration file. Usually ~/.forj/config.yaml
+ # If not found, get the data from defaults.yaml
+ # otherwise, use the get default parameter as value. Default is nil.
+
+
oBuildEnv = BuildEnv.new(oConfig)
ENV['FORJ_CLI_ENV'] = oBuildEnv.sBuildEnvFile
oBuildEnv.set('FORJ_HPC', oFC.sAccountName)
oBuildEnv.set('FORJ_HPC_NET', network.name)
- oBuildEnv.set('FORJ_SECURITY_GROUP', oForjAccount.get(:maestro, 'security_group'))
- oBuildEnv.set('FORJ_KEYPAIR', oForjAccount.get(:credentials,'keypair_name'))
- oBuildEnv.set('FORJ_HPC_NOVA_KEYPUB', oForjAccount.get(:credentials,'keypair_path') + '.pub')
- oBuildEnv.set('FORJ_BASE_IMG', oForjAccount.get(:maestro, 'image'))
- oBuildEnv.set('FORJ_FLAVOR', oForjAccount.get(:maestro, 'flavor'))
- oBuildEnv.set('FORJ_BP_FLAVOR', oForjAccount.get(:maestro, 'bp_flavor'))
- oBuildEnv.set('FORJ_TENANT_NAME', oForjAccount.get(:compute, :tenant_name))
+ oBuildEnv.set('FORJ_SECURITY_GROUP', oForjAccount.get('security_group'))
+ oBuildEnv.set('FORJ_KEYPAIR', oForjAccount.get('keypair_name'))
+ oBuildEnv.set('FORJ_HPC_NOVA_KEYPUB', oForjAccount.get('keypair_path') + '.pub')
+ oBuildEnv.set('FORJ_BASE_IMG', oForjAccount.get('image'))
+ oBuildEnv.set('FORJ_FLAVOR', oForjAccount.get('flavor'))
+ oBuildEnv.set('FORJ_BP_FLAVOR', oForjAccount.get('bp_flavor'))
+ oBuildEnv.set('FORJ_TENANT_NAME', oForjAccount.get(:tenant_name))
oBuildEnv.set('FORJ_HPC_COMPUTE', rhGet(oConfig.ExtraGet(:hpc_accounts, oFC.sAccountName, :regions), :compute))
-
+
oBuildEnv.set('FORJ_DOMAIN', yDNS[:domain_name])
if yDNS[:tenant_id]
oBuildEnv.set('FORJ_DNS_TENANTID', yDNS[:tenant_id])
oBuildEnv.set('FORJ_DNS_ZONE', yDNS[:service])
@@ -161,12 +166,12 @@
# run build.sh to boot maestro
puts
build = 'bin/build.sh' unless build
- build_config = oConfig.get('build_config')
- box_name = oConfig.get('box_name')
+ build_config = oForjAccount.get('build_config')
+ box_name = oForjAccount.get('box_name')
arg = '--meta blueprint=%s ' % [blueprint]
arg += "--test-box '%s' " % oConfig.get(:test_box) if oConfig.exist?(:test_box)
command = '%s --build_ID %s --box-name %s --build-conf-dir %s --build-config %s --gitBranch %s --debug-box %s' % [build, name, box_name, infra_dir, build_config, branch, arg]
@@ -199,17 +204,17 @@
class BuildEnv
attr_reader :sBuildEnvFile
-
+
def initialize(oConfig)
- oConfig.fatal_if_inexistent('infra_repo')
- oConfig.fatal_if_inexistent('account_name')
+ oConfig.fatal_if_inexistent(:infra_repo)
+ oConfig.fatal_if_inexistent(:account_name)
- sBuildDir = File.expand_path(File.join(oConfig.get('infra_repo'),'build'))
- @sBuildEnvFile = File.join(sBuildDir, oConfig.get('account_name')+'.build.env')
+ sBuildDir = File.expand_path(File.join(oConfig.get(:infra_repo),'build'))
+ @sBuildEnvFile = File.join(sBuildDir, oConfig.get(:account_name)+'.build.env')
Helpers.ensure_dir_exists(sBuildDir)
@yBuildEnvVar = {}
@oConfig = oConfig
end