forj 0.0.43 → 0.0.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cc168384e8283de3099794ba3fb85759286de890
4
- data.tar.gz: 216c1d4e25503388473f88a2cce2db26674dc0d2
3
+ metadata.gz: 2a1aeb1a399ecfab67138cf2cb50b12deff71212
4
+ data.tar.gz: 9c46f0ccaeaaca2775b4d897065b10f1d4aea93e
5
5
  SHA512:
6
- metadata.gz: 5c5edfe564a87533f683f25137a4cca65ad6fe642c160d729d73efcf66656614ba26e53d76fda270811c5b64a59715eadd795699bfbe1854b1f6b4ac651e7fa5
7
- data.tar.gz: e0c005a6db73411311b85cece7979536cd56709d25644d182128a63eca8355f724fea32c39a3052f41fa2559f62b39419d3e10666ccd2cfe42928bc400d15a1b
6
+ metadata.gz: dd00c4f1f397736bf1f3b6cb0fce7c65a1545c927544afafb42cad52271632dcbded52531d643e5a674d3fe39f106e5e1139eae43cd082124555e5da0c9b7ccd
7
+ data.tar.gz: b840b30588d58ed512bb1890688aeb50596675d3376cbcaf9bbeb51ab2677723d1c0cef819b2cd5a18ce97755a7cb29d19dced034a8c38e66e8b8a702454583c
data/Rakefile CHANGED
@@ -21,7 +21,7 @@ require 'rspec/core/rake_task'
21
21
 
22
22
  $stdout.sync = true
23
23
  $stderr.sync = true
24
- Bundler::GemHelper.install_task
24
+ Bundler::GemHelper.install_tasks
25
25
 
26
26
  task :default => [:spec]
27
27
 
data/bin/forj CHANGED
@@ -25,6 +25,18 @@ $LIB_PATH = File.expand_path(File.join(File.dirname($APP_PATH),'lib'))
25
25
 
26
26
  $LOAD_PATH << $LIB_PATH
27
27
 
28
+ require 'appinit.rb' # Load generic Application level function
29
+
30
+ # Initialize forj paths
31
+ AppInit::forj_initialize()
32
+
33
+ # Initialize global Log object
34
+ $FORJ_LOGGER=ForjLog.new()
35
+
36
+ require 'forj-config.rb' # Load class ForjConfig and Meta data class variables. Requires Logging to be fully set.
37
+ require 'forj-account.rb' # Load class ForjAccount
38
+ require 'connection.rb' # Load class ForjConnection
39
+
28
40
  require 'boot.rb'
29
41
  require 'down.rb'
30
42
  require 'setup.rb'
@@ -34,25 +46,14 @@ include Boot
34
46
  include Down
35
47
  include Setup
36
48
  include Ssh
37
-
38
- require 'forj-config.rb' # Load class ForjConfig
39
- require 'forj-account.rb' # Load class ForjAccount
40
- require 'log.rb' # Load default loggers
41
- require 'connection.rb' # Load class ForjConnection
49
+ require 'forj-settings.rb' # Settings features
42
50
 
43
51
  #require 'debugger' # Use to debug with Ruby < 2.0
44
52
  #require 'byebug' # Use to debug with Ruby >= 2.0
45
53
 
46
- include Logging
47
54
 
48
- # Initialize forj paths
49
- ensure_forj_dirs_exists()
50
-
51
- # Initialize global Log object
52
- $FORJ_LOGGER=ForjLog.new()
53
55
 
54
-
55
- class Forj < Thor
56
+ class ForjThor < Thor
56
57
 
57
58
  class_option :debug, :aliases => '-d', :desc => 'Set debug mode'
58
59
  class_option :verbose, :aliases => '-v', :desc => 'Set verbose mode'
@@ -163,6 +164,9 @@ Maestro/infra bootstrap debugging:"
163
164
 
164
165
  # Options are added if they are set. Otherwise, get will retrieve the default value.
165
166
  oConfig.set(:account_name, options[:account_name]) if options[:account_name]
167
+ oForjAccount = ForjAccount.new(oConfig)
168
+ oForjAccount.ac_load()
169
+
166
170
  oConfig.set(:infra_repo, options[:infra])
167
171
  oConfig.set(:keypair_name, options[:key_name])
168
172
  oConfig.set(:keypair_path, options[:key_path])
@@ -171,6 +175,7 @@ Maestro/infra bootstrap debugging:"
171
175
  oConfig.set(:flavor, options[:maestro_flavor])
172
176
  oConfig.set(:bp_flavor, options[:bp_flavor])
173
177
  oConfig.set(:maestro_repo , options[:maestro_repo])
178
+ oConfig.set(:branch , options[:branch])
174
179
  oConfig.set(:test_box, File.expand_path(options[:test_box])) if options[:test_box] and File.directory?(File.expand_path(options[:test_box]))
175
180
 
176
181
 
@@ -187,8 +192,7 @@ Maestro/infra bootstrap debugging:"
187
192
  end
188
193
  end
189
194
 
190
- Boot.boot(blueprint, name, options[:build],options[:branch],
191
- options[:boothook], options[:box_name], oConfig)
195
+ Boot.boot(blueprint, name, options[:build], options[:boothook], options[:box_name], oForjAccount)
192
196
  end
193
197
 
194
198
  ################################# Show defaults
@@ -244,16 +248,19 @@ Warning! This action don't removed any network/security groups cloud object.
244
248
  def down(name)
245
249
  Logging.set_level(Logger::INFO) if options[:verbose]
246
250
  Logging.set_level(Logger::DEBUG) if options[:debug]
251
+
247
252
  oConfig = ForjConfig.new(options[:config])
248
253
  oConfig.set(:account_name, options[:account_name]) if options[:account_name]
254
+ oForjAccount = ForjAccount.new(oConfig)
255
+ oForjAccount.ac_load()
249
256
 
250
- Down.down(oConfig, name)
257
+ Down.down(oForjAccount, name)
251
258
  end
252
259
 
253
260
  ################################# SET
254
- desc 'set [key=value] [options]', 'Set some variables in defaults or account.'
261
+ desc 'set [key=value] [...] [options]', 'Set one or more variables in defaults or a forj account.'
255
262
  long_desc <<-LONGDESC
256
- You can set some variables to change 'forj' defaults or specifically for a FORJ account.
263
+ You can set some variables to change 'forj' defaults or specifically some account data.
257
264
 
258
265
  Ex: By default, forj use ~/.ssh/forj-id_rsa as keypair for all forge instance. During setup, if this keypair doesn't exist, it proposes to create it for you, with ssh-keygen.
259
266
  If you want to use a keypair that already exists, you can set it as your default, with:
@@ -280,65 +287,23 @@ Ex: By default, forj use ~/.ssh/forj-id_rsa as keypair for all forge instance. D
280
287
 
281
288
  method_option :account_name, :aliases => '-a', :desc => "Set the forj account name to use. By default, uses the default account set in your local config file."
282
289
 
283
- def set(key_val = nil)
290
+ def set(*p)
284
291
  Logging.set_level(Logger::INFO) if options[:verbose]
285
292
  Logging.set_level(Logger::DEBUG) if options[:debug]
286
293
 
287
294
  oConfig=ForjConfig.new()
288
- if not key_val
289
- puts "List of FORJ settings: Use 'forj set KeyName=Value [-a YourAccount]' to set one. Use `forj show defaults` / `account` to check values."
290
- hMaps = oConfig.getAppDefault(:account_section_mapping)
291
- hMaps.each_key { | key |
292
- sDesc = rhGet(hMaps, key, :desc)
293
- puts "%-15s : %s" % [key, sDesc]
294
- }
295
+
296
+ if p.length == 0 and not options[:account_name]
297
+ Forj::Settings::config_show_all(oConfig)
298
+
299
+ elsif p.length == 0 and options[:account_name]
300
+ Forj::Settings::account_show_all(oConfig, options[:account_name])
301
+
302
+ elsif p.length != 0 and options[:account_name]
303
+ Forj::Settings::account_set(oConfig, options[:account_name], p)
304
+
295
305
  else
296
- mkey_val = key_val.match(/^(.*) *= *(.*)$/)
297
- if mkey_val
298
- if not options[:account_name]
299
- if oConfig.exist?(mkey_val[1])
300
- sBef = "%s: '%s'" % [oConfig.exist?(mkey_val[1]), oConfig.get(mkey_val[1])]
301
- else
302
- sBef = "unset"
303
- end
304
- if mkey_val[2] != ""
305
- oConfig.LocalSet(mkey_val[1], mkey_val[2])
306
- else
307
- oConfig.LocalDel(mkey_val[1])
308
- end
309
- oConfig.SaveConfig()
310
- if oConfig.exist?(mkey_val[1])
311
- sAft = "%s: '%s'" % [oConfig.exist?(mkey_val[1]), oConfig.get(mkey_val[1])]
312
- else
313
- sAft = "unset"
314
- end
315
- puts "Updated:\n%s: %s => %s" % [mkey_val[1], sBef, sAft]
316
- else
317
- account_name = options[:account_name]
318
- oConfig.set(:account_name, account_name)
319
- oForjAccount = ForjAccount.new(oConfig)
320
- oForjAccount.ac_load()
321
- if oForjAccount.exist?(mkey_val[1])
322
- sBef = "%s: '%s'" % [oForjAccount.exist?(mkey_val[1]).sub("hash", account_name), oForjAccount.get(mkey_val[1])]
323
- else
324
- sBef = "unset"
325
- end
326
- if mkey_val[2] == ""
327
- oForjAccount.del(mkey_val[1])
328
- else
329
- oForjAccount.set(mkey_val[1], mkey_val[2])
330
- end
331
- oForjAccount.ac_save()
332
- if oForjAccount.exist?(mkey_val[1])
333
- sAft = "%s: '%s'" % [oForjAccount.exist?(mkey_val[1]).sub("hash", account_name), oForjAccount.get(mkey_val[1])]
334
- else
335
- sAft = "unset"
336
- end
337
- puts "Updated:\n%s: %s => %s" % [mkey_val[1], sBef, sAft]
338
- end
339
- else
340
- Logging.fatal(1 ,"Syntax error. Please set your value like: 'key=value' and retry.")
341
- end
306
+ Forj::Settings::config_set(oConfig, p)
342
307
  end
343
308
  end
344
309
 
@@ -369,54 +334,18 @@ Ex: To get the keypair_name defined from the account, or from your ~/.forj/confi
369
334
  Logging.set_level(Logger::INFO) if options[:verbose]
370
335
  Logging.set_level(Logger::DEBUG) if options[:debug]
371
336
 
372
- oConfig=ForjConfig.new()
373
- if not options[:account_name]
374
- if key
375
- if oConfig.exist?(key)
376
- puts "%s:'%s'" % [oConfig.exist?(key), oConfig.get(key)]
377
- else
378
- Logging.message("key '%s' not found" % [key])
379
- end
380
- else
381
- puts "legend: default = Application defaults, local = Local default config\n\n" % [options[:account_name], options[:account_name]]
382
- puts "%-15s(%-7s) %-12s:\n--------------------------------------" % ['key', 'origin', 'section name']
383
- hMaps = oConfig.getAppDefault(:account_section_mapping)
384
- hMaps.each { |map_key, value|
385
- if oConfig.exist?(map_key)
386
- puts "%-15s(%-7s) %-12s: '%s'" % [map_key, oConfig.exist?(map_key), value[:section], oConfig.get(map_key)]
387
- else
388
- puts "%-15s( ) %-12s: unset" % [map_key, value[:section]]
389
- end
390
-
391
- }
392
- end
393
- puts "\nUse 'forj set <key>=<value>' to update defaults"
337
+ oConfig = ForjConfig.new()
338
+ if not options[:account_name] and not key
339
+ Forj::Settings::config_get_all(oConfig)
340
+
341
+ elsif options[:account_name] and key
342
+ Forj::Settings::account_get(oConfig, options[:account_name], key)
343
+
344
+ elsif not options[:account_name] and key
345
+ Forj::Settings::config_get(oConfig, key)
346
+
394
347
  else
395
- oConfig.set(:account_name, options[:account_name])
396
- oForjAccount = ForjAccount.new(oConfig)
397
- Logging.fatal(1, "Unable to load account '%s'. Not found." % options[:account_name]) if not oForjAccount.ac_load
398
- if key
399
- if oForjAccount.exist?(key)
400
- puts "%s: '%s'" % [oForjAccount.exist?(key).sub("hash", options[:account_name]), oForjAccount.get(key)]
401
- elsif oForjAccount.exist?(key.parameterize.underscore.to_sym)
402
- key_symb = key.parameterize.underscore.to_sym
403
- puts "%s: '%s'" % [oForjAccount.exist?(key_symb).sub("hash", options[:account_name]), oForjAccount.get(key_symb)]
404
- else
405
- Logging.message("key '%s' not found"% [key])
406
- end
407
- else
408
- puts "legend: default = Application defaults, local = Local default config, %s = '%s' account config\n\n" % [options[:account_name], options[:account_name]]
409
- puts "%-15s(%-7s) %-12s:\n--------------------------------------" % ['key', 'origin', 'section name']
410
- hMaps = oConfig.getAppDefault(:account_section_mapping)
411
- hMaps.each { |map_key, value|
412
- if oForjAccount.exist?(map_key)
413
- puts "%-15s(%-7s) %-12s: '%s'" % [map_key, oForjAccount.exist?(map_key).sub("hash", options[:account_name]), value[:section], oForjAccount.get(map_key)]
414
- else
415
- puts "%-15s( ) %12s: unset" % [map_key, value[:section]]
416
- end
417
- }
418
- end
419
- puts "\nUse 'forj set <key>=<value> -a %s' to update account data.\nOr 'forj set <key>= -a %s' to restore key default value." % [options[:account_name], options[:account_name]]
348
+ Forj::Settings::account_get_all(oConfig, options[:account_name])
420
349
  end
421
350
  end
422
351
 
@@ -472,4 +401,4 @@ Several data will be requested like:
472
401
  end
473
402
 
474
403
 
475
- Forj.start
404
+ ForjThor.start
data/lib/appinit.rb ADDED
@@ -0,0 +1,50 @@
1
+ # encoding: UTF-8
2
+
3
+ # (c) Copyright 2014 Hewlett-Packard Development Company, L.P.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+
18
+
19
+ # Base Logging system started and loaded.
20
+ require 'log.rb' # Load default loggers
21
+ include Logging
22
+
23
+ module AppInit
24
+
25
+ def AppInit.forj_initialize()
26
+ # Function to create FORJ paths if missing.
27
+
28
+ # Defining Global variables
29
+ $FORJ_DATA_PATH = File.expand_path(File.join('~', '.forj'))
30
+ $FORJ_ACCOUNTS_PATH = File.join($FORJ_DATA_PATH, 'accounts')
31
+ $FORJ_KEYPAIRS_PATH = File.join($FORJ_DATA_PATH, 'keypairs')
32
+ $FORJ_CREDS_PATH = File.expand_path(File.join('~', '.cache', 'forj'))
33
+
34
+ # TODO: To move to an hpcloud object.
35
+ $HPC_KEYPAIRS = File.expand_path(File.join('~', '.hpcloud', 'keypairs'))
36
+ $HPC_ACCOUNTS = File.expand_path(File.join('~', '.hpcloud', 'accounts'))
37
+
38
+ AppInit.ensure_dir_exists($FORJ_DATA_PATH)
39
+ AppInit.ensure_dir_exists($FORJ_ACCOUNTS_PATH)
40
+ AppInit.ensure_dir_exists($FORJ_KEYPAIRS_PATH)
41
+ FileUtils.chmod(0700, $FORJ_KEYPAIRS_PATH)
42
+ AppInit.ensure_dir_exists($FORJ_CREDS_PATH)
43
+ end
44
+
45
+ def AppInit.ensure_dir_exists(path)
46
+ if not dir_exists?(path)
47
+ FileUtils.mkpath(path) if not File.directory?(path)
48
+ end
49
+ end
50
+ end
data/lib/boot.rb CHANGED
@@ -34,22 +34,13 @@ include Helpers
34
34
  # Boot module
35
35
  #
36
36
  module Boot
37
- def boot(blueprint, name, build, branch, boothook, box_name, oConfig)
37
+ def boot(blueprint, name, build, boothook, box_name, oConfig)
38
38
  begin
39
39
 
40
40
  Logging.fatal(1, 'FORJ account not specified. Did you used `forj setup`, before?') if not oConfig.get(:account_name)
41
41
 
42
- oForjAccount = ForjAccount.new(oConfig)
43
-
44
- oForjAccount.ac_load()
45
-
46
-
47
- # Load Forj account data
48
- forjAccountFile = File.join($FORJ_ACCOUNTS_PATH, oConfig.get(:account_name))
49
- oConfig.ExtraLoad(forjAccountFile, :forj_accounts, oConfig.get(:account_name))
50
-
51
42
  # Check options and set data
52
- cloud_provider = oForjAccount.getAccountData(:account, :provider, 'hpcloud')
43
+ cloud_provider = oConfig.get(:provider_name, 'hpcloud')
53
44
 
54
45
  if cloud_provider != 'hpcloud'
55
46
  Logging.fatal(1, "forj setup support only hpcloud. '%s' is currently not supported." % cloud_provider)
@@ -61,7 +52,7 @@ module Boot
61
52
  # Initialize defaults
62
53
  maestro_url = oConfig.get(:maestro_url)
63
54
 
64
- infra_dir = File.expand_path(oForjAccount.get(:infra_repo))
55
+ infra_dir = File.expand_path(oConfig.get(:infra_repo))
65
56
 
66
57
 
67
58
  # Check about infra repo compatibility with forj cli
@@ -80,47 +71,47 @@ module Boot
80
71
  end
81
72
 
82
73
  # Get FORJ DNS setting
83
- yDNS = rhGet(oForjAccount.hAccountData, :dns)
84
- Logging.fatal(1, "DNS or domain name are missing. Please execute forj setup %s" % oForjAccount.getAccountData(:account, 'name')) if not yDNS
74
+ yDNS = rhGet(oConfig.hAccountData, :dns)
75
+ Logging.fatal(1, "DNS or domain name are missing. Please execute forj setup %s" % oConfig.getAccountData(:account, 'name')) if not yDNS
85
76
 
86
- branch = oConfig.get(:branch) unless branch
77
+ branch = oConfig.get(:branch, 'master')
87
78
 
88
79
  # Step Maestro Clone
89
- if not oForjAccount.get(:maestro_repo)
80
+ if not oConfig.get(:maestro_repo)
90
81
  Logging.info('cloning maestro repo from \'%s\'...' % maestro_url)
91
82
  Repositories.clone_repo(maestro_url)
92
83
  maestro_repo=File.expand_path('~/.forj/maestro')
93
84
  else
94
- maestro_repo=File.expand_path(oForjAccount.get(:maestro_repo))
85
+ maestro_repo=File.expand_path(oConfig.get(:maestro_repo))
95
86
  if not File.exists?('%s/templates/infra/maestro.box.%s.env' % [maestro_repo, branch])
96
- Logging.fatal(1, "'%s' is not a recognized Maestro repository. forj cli searched for templates/infra/%s-maestro.box.GITBRANCH.env.tmpl" % [maestro_repo, cloud_provider])
87
+ Logging.fatal(1, "'%s' is not a recognized Maestro repository. forj cli searched for templates/infra/maestro.box.%s.env" % [maestro_repo, branch])
97
88
  end
98
89
  Logging.info('Using your maestro cloned repo \'%s\'...' % maestro_repo)
99
90
  end
100
91
 
101
92
  if bBuildInfra
102
93
  Logging.info('Building your infra... in \'%s\'' % [infra_dir])
103
- Repositories.create_infra(maestro_repo)
94
+ Repositories.create_infra(maestro_repo, branch)
104
95
  end
105
96
 
106
97
  # Connect to services
107
98
  oFC=ForjConnection.new(oConfig)
108
99
 
109
- Logging.info('Configuring network \'%s\'' % [oForjAccount.get('network')])
100
+ Logging.info('Configuring network \'%s\'' % [oConfig.get('network_name')])
110
101
  begin
111
- network = Network.get_or_create_network(oFC, oForjAccount.get('network'))
102
+ network = Network.get_or_create_network(oFC, oConfig.get('network_name'))
112
103
  subnet = Network.get_or_create_subnet(oFC, network.id, network.name)
113
104
  Network.get_or_create_router(oFC, network, subnet)
114
105
  rescue => e
115
106
  Logging.fatal(1, "Network properly configured is required.", e)
116
107
  end
117
108
 
118
- Logging.info('Configuring keypair \'%s\'' % [oForjAccount.get('keypair_name')])
119
- SecurityGroup.hpc_import_key(oForjAccount)
109
+ Logging.info('Configuring keypair \'%s\'' % [oConfig.get('keypair_name')])
110
+ SecurityGroup.hpc_import_key(oConfig)
120
111
 
121
112
 
122
- Logging.info('Configuring Security Group \'%s\'' % [oForjAccount.get('security_group')])
123
- security_group = SecurityGroup.get_or_create_security_group(oFC, oForjAccount.get('security_group'))
113
+ Logging.info('Configuring Security Group \'%s\'' % [oConfig.get('security_group')])
114
+ security_group = SecurityGroup.get_or_create_security_group(oFC, oConfig.get('security_group'))
124
115
  ports = oConfig.get(:ports)
125
116
 
126
117
  ports.each do |port|
@@ -135,24 +126,20 @@ module Boot
135
126
  end
136
127
  end
137
128
 
138
- # oForjAccount data get are retrieved from the account file under section described in defaults.yaml, as soon as this mapping exist.
139
- # If not found, get the data from the local configuration file. Usually ~/.forj/config.yaml
140
- # If not found, get the data from defaults.yaml
141
- # otherwise, use the get default parameter as value. Default is nil.
142
129
 
143
130
 
144
131
  oBuildEnv = BuildEnv.new(oConfig)
145
132
  ENV['FORJ_CLI_ENV'] = oBuildEnv.sBuildEnvFile
146
133
  oBuildEnv.set('FORJ_HPC', oFC.sAccountName)
147
134
  oBuildEnv.set('FORJ_HPC_NET', network.name)
148
- oBuildEnv.set('FORJ_SECURITY_GROUP', oForjAccount.get('security_group'))
149
- oBuildEnv.set('FORJ_KEYPAIR', oForjAccount.get('keypair_name'))
150
- oBuildEnv.set('FORJ_HPC_NOVA_KEYPUB', oForjAccount.get('keypair_path') + '.pub')
151
- oBuildEnv.set('FORJ_BASE_IMG', oForjAccount.get('image'))
152
- oBuildEnv.set('FORJ_FLAVOR', oForjAccount.get('flavor'))
153
- oBuildEnv.set('FORJ_BP_FLAVOR', oForjAccount.get('bp_flavor'))
154
- oBuildEnv.set('FORJ_TENANT_NAME', oForjAccount.get(:tenant_name))
155
- oBuildEnv.set('FORJ_HPC_COMPUTE', rhGet(oConfig.ExtraGet(:hpc_accounts, oFC.sAccountName, :regions), :compute))
135
+ oBuildEnv.set('FORJ_SECURITY_GROUP', oConfig.get('security_group'))
136
+ oBuildEnv.set('FORJ_KEYPAIR', oConfig.get('keypair_name'))
137
+ oBuildEnv.set('FORJ_HPC_NOVA_KEYPUB', oConfig.get('keypair_path') + '.pub')
138
+ oBuildEnv.set('FORJ_BASE_IMG', oConfig.get('image'))
139
+ oBuildEnv.set('FORJ_FLAVOR', oConfig.get('flavor'))
140
+ oBuildEnv.set('FORJ_BP_FLAVOR', oConfig.get('bp_flavor'))
141
+ oBuildEnv.set('FORJ_TENANT_NAME', oConfig.get(:tenant_name))
142
+ oBuildEnv.set('FORJ_HPC_COMPUTE', rhGet(oConfig.oConfig.ExtraGet(:hpc_accounts, oFC.sAccountName, :regions), :compute))
156
143
 
157
144
 
158
145
  oBuildEnv.set('FORJ_DOMAIN', yDNS[:domain_name])
@@ -168,8 +155,8 @@ module Boot
168
155
 
169
156
  build = 'bin/build.sh' unless build
170
157
 
171
- build_config = oForjAccount.get('build_config')
172
- box_name = oForjAccount.get('box_name')
158
+ build_config = oConfig.get('build_config')
159
+ box_name = oConfig.get('box_name')
173
160
 
174
161
  arg = '--meta blueprint=%s ' % [blueprint]
175
162
  arg += "--test-box '%s' " % oConfig.get(:test_box) if oConfig.exist?(:test_box)
@@ -209,12 +196,12 @@ class BuildEnv
209
196
 
210
197
  def initialize(oConfig)
211
198
 
212
- oConfig.fatal_if_inexistent(:infra_repo)
213
- oConfig.fatal_if_inexistent(:account_name)
199
+ oConfig.oConfig.fatal_if_inexistent(:infra_repo)
200
+ oConfig.oConfig.fatal_if_inexistent(:account_name)
214
201
 
215
202
  sBuildDir = File.expand_path(File.join(oConfig.get(:infra_repo),'build'))
216
203
  @sBuildEnvFile = File.join(sBuildDir, oConfig.get(:account_name)+'.build.env')
217
- Helpers.ensure_dir_exists(sBuildDir)
204
+ AppInit.ensure_dir_exists(sBuildDir)
218
205
  @yBuildEnvVar = {}
219
206
  @oConfig = oConfig
220
207
  end
@@ -234,7 +221,7 @@ class BuildEnv
234
221
  begin
235
222
  File.open(@sBuildEnvFile, 'w') do |out|
236
223
  @yBuildEnvVar.each do | key, value |
237
- desc = @oConfig.getAppDefault(:description, key)
224
+ desc = @oConfig.oConfig.getAppDefault(:description, key)
238
225
  out.write("# %s - %s\n" % [key, desc]) if desc
239
226
  value = "" if not value
240
227
  out.write("%s='%s'\n\n" % [key, value])
data/lib/connection.rb CHANGED
@@ -17,15 +17,38 @@
17
17
 
18
18
  require 'rubygems'
19
19
  require 'fog'
20
- require 'require_relative'
21
-
22
- require_relative 'yaml_parse.rb'
20
+ require 'yaml_parse.rb'
23
21
  include YamlParse
24
22
 
25
23
  #
26
24
  # Connection module
27
25
  #
28
26
 
27
+ class SSLErrorMgt
28
+
29
+ def initialize()
30
+ @iRetry=0
31
+ end
32
+
33
+ def ErrorDetected(message,backtrace)
34
+ if message.match('SSLv2/v3 read server hello A: unknown protocol')
35
+ if @iRetry <5
36
+ sleep(2)
37
+ @iRetry+=1
38
+ print "%s/5 try...\r" % @iRetry if $FORJ_LOGGER.level == 0
39
+ return false
40
+ else
41
+ Logging.error('Too many retry. %s' % message)
42
+ return true
43
+ end
44
+ else
45
+ Logging.error("%s\n%s" % [message,backtrace.join("\n")])
46
+ return true
47
+ end
48
+ end
49
+
50
+ end
51
+
29
52
  class ForjConnection
30
53
 
31
54
  attr_accessor :oCompute
@@ -103,9 +126,9 @@ class ForjConnection
103
126
  if not File.exists?(creds)
104
127
  Logging.fatal(1, "'%s' was not configured. Did you executed 'forj setup %s'? Please do it and retry." % [@sAccountName, @sAccountName])
105
128
  end
106
- @oConfig.ExtraLoad(creds, :hpc_accounts, @sAccountName)
129
+ @oConfig.oConfig.ExtraLoad(creds, :hpc_accounts, @sAccountName)
107
130
 
108
- template = @oConfig.ExtraGet(:hpc_accounts, @sAccountName)
131
+ template = @oConfig.oConfig.ExtraGet(:hpc_accounts, @sAccountName)
109
132
  credentials = {}
110
133
  begin
111
134
  credentials['access_key'] = template[:credentials][:account_id]