forj 1.0.13 → 1.0.14

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: a062220b32731df2805ca604f0f0cb2233613075
4
- data.tar.gz: d5c331135e78162961bc967e328530127aeacb0c
3
+ metadata.gz: 613daa28b3ba9524c23beed49420d1893e909c24
4
+ data.tar.gz: da633b67dda381136608a689d9c47c484d5618c7
5
5
  SHA512:
6
- metadata.gz: 12720b05fba4b2f5fd348039db09f2900984f080da139d9b3c48fecc67b0eb9c2cf7d788af47f6abb6dd19b8dc5896e284ee114f7e06746e02ac27d2fcdc9f62
7
- data.tar.gz: 7980b5830ec4de440b24e8baa7cade68ff3df6eee1c7c287abd221e0494e2e471ec80417de0259479b9928dd8560e3f67eb64e89489a7a74a1bef1b4cb8196b5
6
+ metadata.gz: dbddb2c23bf804063c3106a646d08985c685dfc0b30363825bcda8b645534b7f09fec7a08c528bc0879bd9f8f38950cf054bab790fb069d6c1424a37411881eb
7
+ data.tar.gz: 5e8fcd27a45a2ce4153e699c5b70522637749f0fdb41460ed6f2d86bd98f33120869ec8b336cff7936ae8e822bb5f8deed187f5eb9beddab775c2f4a534a9f80
data/README.md CHANGED
@@ -5,6 +5,8 @@ Forj cli
5
5
  Installation
6
6
  ------------
7
7
 
8
+ Forj cli supports Ruby 1.9.3 or higher.
9
+
8
10
  ###Fedora/CentOS/Redhat rpm like package system
9
11
 
10
12
  **For ruby 2.0**
@@ -17,19 +19,7 @@ Installation
17
19
  **For ruby 1.9**
18
20
 
19
21
  $ apt-get -y update
20
- $ sudo apt-get install ruby1.9.1 ruby1.9.1-dev rubygems1.9.1 build-essential libopenssl-ruby1.9.1 libssl-dev zlib1g-dev libxml2-dev libxslt-dev git -y
21
- $ sudo gem install forj
22
-
23
-
24
- **For ruby 1.8**
25
-
26
- $ sudo apt-get install ruby1.8-dev ruby1.8 ri1.8 rdoc1.8 irb1.8 rubygems -y
27
- $ sudo apt-get install libreadline-ruby1.8 libruby1.8 libopenssl-ruby -y
28
- $ sudo apt-get install libxslt-dev libxml2-dev -y
29
- $ sudo gem install nokogiri
30
- $ sudo apt-get install ruby-bundler -y
31
- $ sudo gem install mime-types -v 1.25.1
32
- $ sudo gem install hpcloud
22
+ $ sudo apt-get install ruby1.9.3 ruby1.9.3-dev rubygems1.9.3 build-essential libopenssl-ruby1.9.3 libssl-dev zlib1g-dev libxml2-dev libxslt-dev git -y
33
23
  $ sudo gem install forj
34
24
 
35
25
  **Installation from source**
@@ -93,12 +83,7 @@ Quick steps: How to create a forj?
93
83
 
94
84
  Ex: `forj boot redstone myforge` - This command will start a Redstone forge named 'myforge' with the default FORJ account. Previous, we set it to be MyAccount.
95
85
 
96
- NOTE: If you are creating a Forge in a corporate network, a proxy may be required for Maestro to access internet.
97
- You can ask `forj` cli to send the proxy to use with -e
98
-
99
- Ex: Thanks to a CorporateAccount setup with forj setup, the following will use it and set the webproxy metadata.
100
-
101
- `forj boot redstone myforge -a CorporateAccount -e webproxy=$http_proxy`
86
+ NOTE: If you are creating a Forge in a corporate network, a proxy may be required. See section [Commmon issues]
102
87
 
103
88
  ###Forj options:
104
89
 
@@ -123,76 +108,96 @@ Commands:
123
108
 
124
109
  #### Configuration
125
110
 
126
- While building your forge, forj needs to load some data by default. Those are listed in the application.
111
+ When you create a new forj (`forj boot`), forj cli will load data from several layers of configuration:
112
+
113
+ 1. Cloud account setting (`forj setup [account]` or `forj get -a <account>` list identified by 'account' origin)
114
+ 2. Local configuration (`forj get` list identified by 'local' origin)
115
+ 3. Application defaults and cloud model. (`forj get` list identified by 'forj_core' or 'default')
116
+
117
+ You can get a complete list of current values:
127
118
 
128
- You can show them with :
119
+ $ forj get
120
+ or
129
121
 
130
- $ forj show defaults
122
+ $ forj get -a <account>
131
123
 
132
124
  If you need to change one of them:
133
125
 
134
- $ forj set "keypair_name=MyKeypairName"
126
+ $ forj set "security_group=test"
127
+ or
135
128
 
136
- ex:
137
- forj set keypair_name=nova
129
+ $ forj set "security_group=mysec" -a <account>
138
130
 
139
- You can check what kind of value, forj will use to boot/access your forge:
131
+ #### Connect to servers
140
132
 
141
- $ forj get -a dev
133
+ To ssh into a server
142
134
 
135
+ $ forj ssh <name> [node]
136
+ e.g.
143
137
 
144
- #### Your config.yaml
138
+ $ forj ssh myforge review # review is one node from redstone blueprint
145
139
 
146
- The following list gives you some details about keys/values required to boot/access your forge.
140
+ Commmon issues
141
+ ==============
147
142
 
143
+ Certificate Authorities
144
+ -----------------------
148
145
 
149
- ~/.forj/config.yaml:
146
+ If your company certify your server with a private certificate authorities service, you may need to do the following:
150
147
 
151
- default:
152
- account_name: name # Default forj account used to connect to your cloud. This setting is automatically set to the first account created with forj setup <CloudProvider>
153
- maestro_url: url # Maestro GIT repository for clone.
154
- infra_repo: path # Path to the default Infra repository used to store your specific bootstrap/build environment. By default: ~/.forj/infra
155
- image: imageName # Image used to create Maestro and all forge boxes. By default, it is 'Ubuntu Precise 12.04.4 LTS Server 64-bit 20140414 (Rescue Image)'
156
- # If you have created the generic proto2b image, you can set it here.
157
- flavor: flavorName # Maestro Flavor name. This flavor is for Maestro only. Your blueprint layout defines each node flavors on needs.
158
- # By default: standard.medium
159
- bp_flavor: flavorName # Blueprint nodes default flavor. Usually, blueprint node are smaller than Maestro.
160
- # By default: standard.small
161
- ports: [Port1,Port2,...] # list of additional ports to add in your cloud security group.
162
- # This list is added to the default one in defaults.yaml
163
- keypair_path: path # Define the file path to your OpenSSH private key. Useful to access your box with ssh command line.
164
- # By default. ~/.ssh/forj-id_rsa
165
- keypair_name: name # keypair name defined in your cloud to access your server. By default we named it 'forj'. If it doesn't exist, it will be created.
166
- router: name # Router name used by your forge boxes will use to access internet.
167
- security_group: name # Security group name to configure and attach to each forge boxes.
168
- network: name # Network name to attach to each forge boxes. By default we use 'private'. If it doesn't exist, it will be created.
169
- # Internal use.
170
- build_config: name # forj cli use 'build.sh' to create Maestro. See build_config option on build.sh to get more information. By default 'box'
171
- branch: name # forj cli use 'build.sh' to create Maestro. See gitbranch option on build.sh to get more information. By default 'master'
172
- box_name: maestro # forj cli use 'build.sh' to create Maestro. See box_name option on build.sh to get more information. By default 'maestro'
148
+ Either your workstation and your cloud may needs to be configured with this CA certificate.
173
149
 
174
- To ssh into a server
150
+ * From your workstation:
175
151
 
176
- forj ssh <name> <node>
177
- e.g. forj ssh maestro_01 [maestro, ci, util, review] # the nodes from your blueprint
152
+ You can instantly provide the CA certificate to forj cli, with SSL_CERT_FILE env variable<BR>
153
+ ex:
178
154
 
179
- Excon and SSL Issue
180
- ===================
155
+ SSL_CERT_FILE=~/tmp/cacert.crt forj boot redstone [...]
156
+
157
+ OR<BR>
158
+
159
+ You can install this certificate in your workstation. This case depends on your OS.<BR>
160
+ typical case:
161
+
162
+ * debian like system:
163
+ - cp file to /usr/share/ca-certificates/
164
+ - Update /etc/ca-certificates.conf
165
+ - call update-ca-certificates
166
+ * rpm like system:
167
+ - cp file to /etc/pki/ca-trust/source/anchors/
168
+ - call update-ca-trust extract
169
+
170
+ * In your cloud:
171
+
172
+ If your cloud is NOT preconfigured (images) with your Company CA certificate,
173
+ you can call forj cli with --ca-root-cert at boot time, to configure your boxes with this missing certificate.
174
+
175
+ ex:
176
+
177
+ forj boot redstone myforge --ca-root-cert ~/tmp/cacert.crt
178
+
179
+ You can ask server in your cloud to install it in specific path and file name
180
+
181
+ forj boot redstone myforge --ca-root-cert '~/tmp/cacert-2015-1.crt#mycompany/cacrt.crt'
182
+
183
+ You can also pre-configure your forj account with this certificate.
184
+
185
+ forj set ca-root-cert=~/tmp/cacert-2015-1.crt -a myaccount
186
+ or
187
+
188
+ forj set 'ca-root-cert=~/tmp/cacert-2015-1.crt#mycompany/cacrt.crt' -a myaccount
181
189
 
182
- If you are connecting to a private cloud, you may need to provide some additional certificate data:
190
+ HTTP/HTTPS proxy
191
+ ----------------
183
192
 
184
- Excon env variables:
185
- * SSL_CERT_DIR : path_to_certs
186
- * SSL_CERT_FILE: path_to_file
193
+ If your cloud is NOT preconfigured (images) with your Company proxy setting,
194
+ you can ask forj cli to configure your server with the Proxy setting needed.
187
195
 
188
- Ex:
189
196
 
190
- export SSL_CERT_FILE=~/ca.crt
191
- forj setup myAccount openstack
197
+ Ex: boot a redstone 'myforge' with a proxy setting.
192
198
 
193
- or
199
+ $ forj boot redstone myforge -a CorporateAccount -e webproxy=$http_proxy
194
200
 
195
- SSL_CERT_FILE=~/ca.crt forj setup myAccount openstack
196
201
 
197
202
  Contributing to Forj
198
203
  =====================
data/bin/forj CHANGED
@@ -16,8 +16,8 @@
16
16
  # limitations under the License.
17
17
 
18
18
  require 'rubygems'
19
- # require 'debugger' # Use to debug with Ruby < 2.0
20
- # require 'byebug' # Use to debug with Ruby >= 2.0
19
+ # require 'debugger' # Use to debug with Ruby < 2.0
20
+ # require 'byebug' # Use to debug with Ruby >= 2.0
21
21
  require 'bundler/setup'
22
22
  require 'thor'
23
23
  require 'ansi'
@@ -166,24 +166,27 @@ If you want to check/updated them, use `forj get [-a account]`
166
166
  method_option :tb_path, :aliases => '-t',
167
167
  :desc => 'Define the path to the test-box script. '\
168
168
  'This option superseeds the TEST_BOX '\
169
- 'environment variable.'
169
+ 'environment variable.'
170
170
  method_option :test_box, :aliases => '-T', :type => :array,
171
171
  :desc => "Use a local repository for test-box\n\n"\
172
172
  'Other options:'
173
173
  method_option :extra_metadata, :aliases => '-e', :desc => 'Custom' \
174
174
  ' server metadata format key1=value1,key2=value2...,keyN=valueN'
175
175
 
176
+ method_option :webproxy, :aliases => '-x',
177
+ :desc => 'Set HTTP/HTTPS proxy setting from'\
178
+ ' your cloud'
176
179
  method_option :ca_root_cert, :desc => 'Certificate Authorities file used by'\
177
180
  ' your compagny to authenticate your intranet servers.'
178
181
 
179
182
  def boot(blueprint, on_or_name, old_accountname = nil, as = nil,
180
183
  old_name = nil)
181
- Forj::Settings.common_options(options)
184
+ opts = Forj::Settings.common_options(options)
182
185
  require 'boot.rb'
183
186
 
184
187
  deprecated_name = [old_accountname, as, old_name]
185
188
 
186
- Forj::Boot.boot(blueprint, on_or_name, deprecated_name, options)
189
+ Forj::Boot.boot(blueprint, on_or_name, deprecated_name, opts)
187
190
  end
188
191
 
189
192
  ################################# Show defaults
@@ -201,7 +204,7 @@ queriable Objects:
201
204
  desc 'show <Object> [name]', 'Show Object (default valuesr, account data,' \
202
205
  ' etc...) values.'
203
206
  def show(object, name = nil)
204
- Forj::Settings.common_options(options)
207
+ opts = Forj::Settings.common_options(options)
205
208
 
206
209
  case object
207
210
  when 'defaults'
@@ -240,7 +243,7 @@ queriable Objects:
240
243
  puts o_config.config_dump([%(account)]).to_yaml
241
244
  puts '---'
242
245
  puts format("To change those values, execute 'forj setup -a %s'.",
243
- options[:account_name])
246
+ opts[:account_name])
244
247
 
245
248
  else
246
249
  PrcLib.error("object '%s' unknown.", name)
@@ -265,8 +268,8 @@ Warning! This action do not remove any network/security groups cloud object.
265
268
  ' Account, config file or forj defaults.'
266
269
  def destroy(name)
267
270
  require 'destroy.rb'
268
- Forj::Settings.common_options(options)
269
- Forj::Destroy.destroy(name, options)
271
+ opts = Forj::Settings.common_options(options)
272
+ Forj::Destroy.destroy(name, opts)
270
273
  end
271
274
 
272
275
  ################################# SET
@@ -310,13 +313,12 @@ you can set it as your default, with:
310
313
  ' local config file.'
311
314
 
312
315
  def set(*p)
313
- PrcLib.level = Logger::INFO if options[:verbose]
314
- PrcLib.level = Logger::DEBUG if options[:debug]
316
+ opts = Forj::Settings.common_options(options)
315
317
 
316
318
  if p.length == 0
317
- Forj::Settings.show_settings(options)
319
+ Forj::Settings.show_settings(opts)
318
320
  else
319
- Forj::Settings.set_settings(options, p)
321
+ Forj::Settings.set_settings(opts, p)
320
322
  end
321
323
  end
322
324
 
@@ -349,11 +351,9 @@ or from your ~/.forj/config.yaml, or if not found, from application defaults.
349
351
  ' local config file.'
350
352
 
351
353
  def get(key = nil)
352
- PrcLib.level = Logger::INFO if options[:verbose]
353
- PrcLib.level = Logger::DEBUG if options[:debug]
354
-
354
+ opts = Forj::Settings.common_options(options)
355
355
  require 'get.rb'
356
- Forj::Get.get(options, key)
356
+ Forj::Get.get(opts, key)
357
357
  end
358
358
 
359
359
  ################################# SSH
@@ -373,13 +373,13 @@ ex: forj ssh myforge -n review
373
373
  ' local config file.'
374
374
 
375
375
  def ssh(oInstanceName)
376
- Forj::Settings.common_options(options)
376
+ opts = Forj::Settings.common_options(options)
377
377
  require 'ssh.rb'
378
378
 
379
- account = Lorj::Account.new(options[:config])
379
+ account = Lorj::Account.new(opts[:config])
380
380
 
381
381
  # Setting account at runtime layer
382
- account[:account_name] = options[:account_name] if options[:account_name]
382
+ account[:account_name] = opts[:account_name] if opts[:account_name]
383
383
 
384
384
  # Setting account at account layer
385
385
  unless account.ac_load account[:account_name]
@@ -388,8 +388,8 @@ ex: forj ssh myforge -n review
388
388
  account[:account_name])
389
389
  end
390
390
 
391
- account.set(:box_ssh, options[:box_name]) if options[:box_name]
392
- account.set(:identity, options[:identity]) if options[:identity]
391
+ account.set(:box_ssh, opts[:box_name]) if opts[:box_name]
392
+ account.set(:identity, opts[:identity]) if opts[:identity]
393
393
 
394
394
  Forj::Ssh.connect(oInstanceName, account)
395
395
  end
@@ -417,10 +417,10 @@ Several data will be requested like:
417
417
  \x5- domain name to add to each boxes hostname
418
418
  LONGDESC
419
419
  def setup(sAccountName = 'hpcloud', sProvider = 'hpcloud')
420
- Forj::Settings.common_options(options)
420
+ opts = Forj::Settings.common_options(options)
421
421
  require 'cloud_connection.rb'
422
422
 
423
- account = Lorj::Account.new(options[:config], Forj.file_version)
423
+ account = Lorj::Account.new(opts[:config], Forj.file_version)
424
424
  account.ac_new(sAccountName, sProvider) unless account.ac_load(sAccountName)
425
425
 
426
426
  o_cloud = Forj::CloudConnection.connect(account)
data/forj.gemspec CHANGED
@@ -19,8 +19,8 @@ Gem::Specification.new do |s|
19
19
  s.name = 'forj'
20
20
  s.homepage = 'https://www.forj.io'
21
21
 
22
- s.version = '1.0.13'
23
- s.date = '2015-05-26'
22
+ s.version = '1.0.14'
23
+ s.date = '2015-06-05'
24
24
  s.summary = 'forj command line'
25
25
  s.description = 'forj cli - See https://www.forj.io for documentation/information'
26
26
 
data/lib/boot.rb CHANGED
@@ -38,7 +38,7 @@ module Forj
38
38
  blueprint, old_accountname, old_name, blueprint, old_name
39
39
  )
40
40
 
41
- if account.get('account_name') == old_accountname
41
+ if account.get(:account_name) == old_accountname
42
42
  PrcLib.warning('%s` instead.', msg)
43
43
  else
44
44
  PrcLib.warning("%s -a '%s'` instead.", msg, old_accountname)
@@ -127,7 +127,6 @@ module Forj
127
127
  @account[:account_name], @account[:account_name])
128
128
  end
129
129
 
130
- options = options.to_h
131
130
  options['tb_path'] = nil if options.key?('test_box') &&
132
131
  !options.key?('tb_path')
133
132
  options_map = { :infra => :infra_repo,
@@ -142,7 +141,8 @@ module Forj
142
141
  :test_box => :test_box,
143
142
  :tb_path => :test_box_path,
144
143
  :ca_root_cert => :ca_root_cert,
145
- :extra_metadata => :extra_metadata }
144
+ :extra_metadata => :extra_metadata,
145
+ :webproxy => :webproxy }
146
146
 
147
147
  load_options(options, options_map) { |k, v| complete_boot_options(k, v) }
148
148
 
data/lib/forj-settings.rb CHANGED
@@ -20,13 +20,20 @@ module Forj
20
20
  # This module helps you to setup your forge's account
21
21
  module Settings
22
22
  def self.common_options(options)
23
- PrcLib.level = Logger::INFO if options[:verbose]
24
- PrcLib.level = Logger::DEBUG if options[:debug]
25
- unless options[:lorj_debug].nil?
26
- PrcLib.core_level = options[:lorj_debug].to_i
23
+ opts = options.to_hash
24
+ if opts.rh_key_to_symbol?
25
+ opts = opts.rh_key_to_symbol
26
+ PrcLib.debug('Thor options converted to use Symbol instead of String '\
27
+ 'in keys')
28
+ end
29
+ PrcLib.level = Logger::INFO if opts[:verbose]
30
+ PrcLib.level = Logger::DEBUG if opts[:debug]
31
+ unless opts[:lorj_debug].nil?
32
+ PrcLib.core_level = opts[:lorj_debug].to_i
27
33
  PrcLib.level = Logger::DEBUG
28
34
  end
29
- latest_version?(options[:account_name]) if options[:account_name]
35
+ latest_version?(opts[:account_name]) if opts[:account_name]
36
+ opts
30
37
  end
31
38
 
32
39
  def self.latest_version?(account_name)
@@ -74,14 +81,19 @@ module Forj
74
81
 
75
82
  def self.config_show_all
76
83
  config = Lorj::Account.new
84
+
85
+ a_processes = [{ :process_module => :cloud },
86
+ { :process_module => :forj_core }]
87
+
88
+ # Loading CloudCore embedding provider controller + its process.
89
+ Lorj::Core.new(config, a_processes)
90
+
77
91
  puts 'List of available FORJ default settings:'
78
- puts format(
79
- "%-15s %-12s :\n------------------------------",
80
- 'key',
81
- 'section name'
82
- )
92
+ puts format("%-15s %-12s :\n------------------------------",
93
+ 'key', 'section name')
94
+
83
95
  config.meta_each do |section, found_key, hValue|
84
- next if hValue.rh_get(:readonly) || hValue.rh_get(:get) == fals
96
+ next if hValue.rh_get(:readonly) || hValue.rh_get(:get) == false
85
97
  s_desc = hValue.rh_get(:desc)
86
98
  puts format('%-15s %-12s : %s', found_key, section, s_desc)
87
99
  end
@@ -255,12 +267,20 @@ module Forj
255
267
  false
256
268
  end
257
269
 
270
+ # Function to highlight the data origin
271
+ # => yellow : account
272
+ # => white : local config
273
+ # => normal : all other config
274
+ #
275
+ #
258
276
  def self.format_highlight(account_name, config_where, where_format)
259
- return format(where_format, config_where) if config_where == 'default'
277
+ res = format(where_format, 'default')
278
+ return res unless config_where == 'local' || config_where == 'account'
279
+
280
+ res = ANSI.bold(format(where_format, config_where))
281
+ return res if config_where == 'local'
260
282
 
261
- return ANSI.bold(format(where_format,
262
- account_name)) if config_where == 'account'
263
- ANSI.bold(ANSI.yellow(format(where_format, config_where)))
283
+ ANSI.yellow(ANSI.bold(format(where_format, account_name)))
264
284
  end
265
285
 
266
286
  def self.get_account_values(account, account_name)
@@ -285,18 +305,13 @@ module Forj
285
305
  s_upd_msg, mykey, where_highlight, section,
286
306
  account.get(mykey, nil, :section => section), default_key)
287
307
  else
288
- puts format(
289
- '%s %-15s( ) %-12s: unset',
290
- s_upd_msg,
291
- mykey,
292
- section
293
- )
308
+ puts format('%s %-15s( ) %-12s: unset',
309
+ s_upd_msg, mykey, section)
294
310
  end
295
311
  end
296
312
  end
297
313
 
298
314
  def self.account_get_all(oConfig, account_name)
299
- # byebug
300
315
  PrcLib.fatal(1, "Unable to load account '%s'. Not found.",
301
316
  account_name) unless oConfig.ac_load account_name
302
317
  Forj::CloudConnection.connect(oConfig)
@@ -151,7 +151,7 @@
151
151
  :required: true
152
152
  :ask_sort: 0
153
153
  :default_value: "<%= (config[:provider] == 'openstack')?config['credentials#auth_uri']:nil %>"
154
- :validate: !ruby/regexp /v2.0\/tokens/
154
+ :validate: !ruby/regexp /^http.*v2.0\/tokens$/
155
155
  :ask_step: :gardener_config
156
156
 
157
157
 
@@ -176,6 +176,10 @@
176
176
  :pre_step_function: :forj_dns_settings?
177
177
  :ask_step: :dns_config
178
178
 
179
+ :network:
180
+ :webproxy:
181
+ :desc: "HTTP/HTTPS proxy setting to access internet from your cloud"
182
+
179
183
  # Defines maestro environment.
180
184
  :maestro:
181
185
  :tenant_name:
@@ -280,16 +284,16 @@
280
284
  # As forj_core is based on lorj_cloud, we have to disable Lorj_cloud data defaults.
281
285
  :server:
282
286
  :network_name:
283
- :set: false
287
+ :get: false
284
288
  :security_group:
285
- :set: false
289
+ :get: false
286
290
  :box_name:
287
- :set: false
291
+ :get: false
288
292
  :flavor_name:
289
- :set: false
293
+ :get: false
290
294
  :account: false
291
295
  :image_name:
292
296
  :account: false
293
- :set: false
297
+ :get: false
294
298
  :ports:
295
- :set: false
299
+ :get: false
@@ -93,7 +93,7 @@ class ForjCoreProcess
93
93
  if res_found
94
94
  dest_file = "#{res_found[2]}"
95
95
  else
96
- dest_file = File.basename(cert_file)
96
+ dest_file = File.basename(hParams['certs#ca_root_cert'])
97
97
  end
98
98
 
99
99
  metadata['CA_ROOT_CERT'] = dest_file
@@ -65,6 +65,7 @@ class Lorj::BaseDefinition # rubocop: disable Style/ClassAndModuleChildren
65
65
  obj_needs :data, 'credentials#auth_uri'
66
66
  obj_needs_optional
67
67
 
68
+ obj_needs :data, 'network#webproxy'
68
69
  # If requested by user, ask Maestro to manage the DNS.
69
70
  obj_needs :data, 'dns#dns_service'
70
71
  obj_needs :data, 'dns#dns_tenant_id'
@@ -625,6 +625,7 @@ DNS_SECRET='#{hParams['credentials#account_key']}'
625
625
 
626
626
  tb_metadata(hParams, h_meta)
627
627
  ca_root_metadata(hParams, h_meta)
628
+ proxy_metadata(hParams, h_meta)
628
629
 
629
630
  h_meta
630
631
  end
@@ -1473,8 +1474,6 @@ class ForjCoreProcess
1473
1474
  begin
1474
1475
  PrcLib.state("creating ssh connection with '%s' box", o_server[:name])
1475
1476
  ssh_login(ssh_options, user, public_ip)
1476
- PrcLib.debug('Error closing ssh connection, box %s ',
1477
- o_server[:name]) unless session
1478
1477
  rescue => e
1479
1478
  PrcLib.fatal 1, <<-END
1480
1479
  #{e.message}
@@ -0,0 +1,25 @@
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
+ # Functions for test-box
18
+ class ForjCoreProcess
19
+ # This function configure the proxy metadata
20
+ def proxy_metadata(hParams, metadata)
21
+ return unless hParams.exist?('network#webproxy')
22
+
23
+ metadata['webproxy'] = hParams['network#webproxy']
24
+ end
25
+ end
@@ -19,7 +19,7 @@ FORJCORE_PATH = File.expand_path(File.dirname(__FILE__))
19
19
 
20
20
  # Define model
21
21
 
22
- lorj_objects = %w(forj_process test_box ca_root_cert declare)
22
+ lorj_objects = %w(forj_process test_box ca_root_cert proxy declare)
23
23
 
24
24
  lorj_objects.each do |name|
25
25
  load File.join(FORJCORE_PATH, 'forj_core', 'process', name + '.rb')
data/lib/ssh.rb CHANGED
@@ -38,21 +38,13 @@ module Forj
38
38
 
39
39
  if o_forge[:servers].count > 0
40
40
  if account[:box_ssh]
41
- o_server = validate_server_name(name, account, o_forge)
41
+ server = validate_server_name(name, account[:box_ssh], o_forge)
42
42
 
43
- if !o_server.nil?
44
- ssh_connection(account, o_cloud, name, o_server)
45
- else
46
- PrcLib.debug("server '%s.%s' was not found",
47
- account[:box_ssh], name)
48
- PrcLib.high_level_msg("server '%s.%s' was not found.\n",
49
- account[:box_ssh], name)
50
- end
43
+ return if server.nil?
51
44
  else
52
45
  server = select_forge_server(o_forge)
53
-
54
- ssh_connection(account, o_cloud, name, server)
55
46
  end
47
+ ssh_connection(account, o_cloud, name, server)
56
48
  else
57
49
  PrcLib.high_level_msg("No server(s) found for instance name '%s' \n",
58
50
  name)
@@ -85,20 +77,14 @@ module Forj
85
77
  o_cloud.create(:ssh, :server => server)
86
78
  end
87
79
 
88
- def self.validate_server_name(name, account, o_forge)
89
- box_ssh = account[:box_ssh]
90
-
91
- o_server = nil
92
- regex = Regexp.new(format('%s\.%s$', box_ssh, name))
93
-
94
- o_forge[:servers].each do |server|
95
- o_name = server[:name]
96
- next if (regex =~ o_name).nil?
97
- o_server = server
98
- break
80
+ def self.validate_server_name(name, box_ssh, o_forge)
81
+ unless o_forge[:servers].key?(box_ssh)
82
+ PrcLib.debug("server '%s.%s' was not found", box_ssh, name)
83
+ PrcLib.high_level_msg("server '%s.%s' was not found.\n", box_ssh, name)
84
+ return
99
85
  end
100
86
 
101
- o_server
87
+ o_forge[:servers][box_ssh]
102
88
  end
103
89
  end
104
90
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: forj
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.13
4
+ version: 1.0.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - forj team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-26 00:00:00.000000000 Z
11
+ date: 2015-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -211,6 +211,7 @@ files:
211
211
  - lib/process/forj_core/process/ca_root_cert.rb
212
212
  - lib/process/forj_core/process/declare.rb
213
213
  - lib/process/forj_core/process/forj_process.rb
214
+ - lib/process/forj_core/process/proxy.rb
214
215
  - lib/process/forj_core/process/test_box.rb
215
216
  - lib/process/forj_core_process.rb
216
217
  - lib/ssh.rb